我在代码上的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;
有些人可以帮助我,如何正确消毒上述行。
答案 0 :(得分:2)
这是否可利用,实际上取决于如何调用此函数的上下文,对象select
来自哪里(以及它是如何填充的 - 这是外部可控制的吗?)
无论如何,这里最简单的解决方案是将值设置为innerText
属性,而不是innerHTML
,如下所示:
summary.innerText = 'Test1 - ' + select[select.selectedIndex].text;