我已经浏览了几个用于防止XSS的在线参考,并且能够在显示用户控制的输入时使用JSTL tag / fn:escapeXml()EL函数解决与JSP相关的问题。
虽然我无法弄清楚以下代码如何导致XSS漏洞
导致XSS漏洞的代码行:
if(div == null)
out.println("\twindow.scroll(0, "+value+");");
else
out.println("\tdocument.getElementById('"+div+"').scrollTop = "+value+";");
完整的代码块:
out.println("<SCRIPT type=\"text/javascript\">");
out.println("function scrollAfterLoad()");
out.println("{");
//out.println("\talert('scrollAfterLoad('+y+')');");
// If the id of a DIV is specified, we will scroll that DIV, otherwise we scroll
// the entire window
if(div == null)
out.println("\twindow.scroll(0, "+value+");");
else
out.println("\tdocument.getElementById('"+div+"').scrollTop = "+value+";");
out.println("\tbodyDiv = document.getElementById(\"body\");");
out.println("\tif(bodyDiv != null)");
out.println("\t\tsetTimeout('bodyDiv.style.visibility = \"visible\";', 0);");
out.println("}");
这里“div”和“value”是字符串变量,上面的代码是TagHandler类
答案 0 :(得分:-1)
您可以使用以下企业安全API:
ESAPI.encoder().encodeForJavaScript("dynamic value");
请参阅:https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API