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

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

Сценарий следующим образом:

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;

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

1 ответ

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

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

summary.innerText = 'Test1 - ' + select[select.selectedIndex].text;
Другие вопросы по тегам