java中的跨站点脚本漏洞

时间:2015-02-02 11:07:38

标签: java javascript xss

我已经浏览了几个用于防止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类

1 个答案:

答案 0 :(得分:-1)

您可以使用以下企业安全API:

ESAPI.encoder().encodeForJavaScript("dynamic value");

请参阅:https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API