Java 中的跨站点脚本漏洞

Cross Site scripting vulnerabilty in java

本文关键字:脚本 漏洞 站点 Java      更新时间:2023-09-26

我已经浏览了几个在线参考资料来防止XSS,并且能够在显示用户控制的输入时使用JSTL标签/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类中

您可以使用企业安全 API,如下所示:

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

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