我在我的代码的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;


可以请一些帮助我,如何正确清洁以上行。

最佳答案

它是否可利用,实际上取决于调用此函数的方式,对象select的来源(及其填充方式-是否可以在外部控制?)的上下文。

无论如何,这里最简单的解决方案是将值设置为innerText属性而不是innerHTML,如下所示:

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

关于javascript - 潜在客户的XSS,没有经过适当的 sanitizer 或验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39998029/

10-10 15:06