Клиентский потенциал XSS без надлежащей очистки или проверки

Я получаю сообщение ниже при сканировании checkmarx в моем коде. Получает пользовательский ввод для текстового элемента. Затем значение этого элемента проходит через код без надлежащей очистки или проверки и в конечном итоге отображается пользователю в методе Ниже приведен мой код. Может кто-нибудь помочь мне, как дезинфицировать приведенный ниже сценарий.

Скрипт следующим образом:

function setSummary(select,summary,lim, summaryHidden, limHidden) {
    if(select[select.selectedIndex].value == '-1') {
        summary.innerHTML = '';
        lim.innerHTML = '';
        summaryHidden.value = '';
        limHidden.value = '';
    } else {
        summary.innerHTML = 'Test1 - '+select[select.selectedIndex].text;
        summaryHidden.value = 'Test2 - '+select[select.selectedIndex].text;
        lim.innerHTML = 'Virtual - '+select[select.selectedIndex].text;
        limHidden.value = 'Virtual - '+select[select.selectedIndex].text;
    }
}

Я получаю уязвимость checkmarx в строке ниже из-за того, что не был должным образом очищен или проверен

summary.innerHTML = 'Test1 - '+select[select.selectedIndex].text;

Не могли бы некоторые, пожалуйста, помочь мне, как правильно дезинфицировать вышеуказанную строку.


person Harris    schedule 12.10.2016    source источник


Ответы (1)


Является ли это эксплуатируемым или нет, действительно зависит от контекста того, как эта функция вызывается, откуда берется объект select (и как он заполняется - это когда-либо управляемо извне?)

Несмотря на это, самым простым решением здесь было бы установить значение свойства innerText вместо innerHTML, например:

summary.innerText = 'Test1 - ' + select[select.selectedIndex].text;
person AviD    schedule 13.10.2016