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