0

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

有人可以帮助我,如何正确清理上述行。

4

1 回答 1

2

这是否可利用,实际上取决于如何调用此函数的上下文,对象select来自何处(以及它是如何填充的 - 这是否可以从外部控制?)

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

summary.innerText = 'Test1 - ' + select[select.selectedIndex].text;
于 2016-10-13T13:27:41.727 回答