未经适当清理或验证的客户潜在XSS

时间:2016-10-12 11:58:19

标签: javascript java jsp checkmarx

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

有些人可以帮助我,如何正确消毒上述行。

1 个答案:

答案 0 :(得分:2)

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

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

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