小编Pro*_*Pro的帖子

我在哪里可以找到ESAPI.properties?

我试图在我的Web应用程序中使用OWASP ESAPI库来转义JSP中的请求参数,如下面的ESAPI.encoder().encodeForHTML(request.getParameter()).

我在WEB-INF/lib下添加了esapi-2.1.0.jar,但是我得到了以下异常

org.owasp.esapi.errors.ConfigurationException:无法以任何方式加载ESAPI.properties.失败.org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration(DefaultSecurityConfiguration.java:439)

但我无法在JAR文件中找到ESAPI.properties.知道我能在哪里得到这个吗?我还应该在哪里放置这个属性文件?请帮忙.

java escaping owasp esapi

10
推荐指数
2
解决办法
4万
查看次数

用于XSS预防的ESAPI不起作用

我正在我们的代码中主要在JSPS中修复跨站点脚本问题.

以下是原始代码

 //scriplet code
    <% String userId = request.getParameter("sid"); 
    ...%>
Run Code Online (Sandbox Code Playgroud)

他们拥有相同的Jsp

     <input type = hidden name = "userID" value = "<%= userId %>" />
Run Code Online (Sandbox Code Playgroud)

我已经进行了更改,在lib和ESAPI.properties中包含esapi-2.1.0.jar,在classpath中包含validation.properties.然后在下面更改scriplet代码以修复上面的代码

      //scriplet code
    <% String userId = ESAPI.encoder().encodeForHTML(request.getParameter("sid")); 
    ...%>
Run Code Online (Sandbox Code Playgroud)

我认为这可以解决问题但是当我使用Fortify扫描我的代码时,这些行再次突出显示为有XSS问题.如果你们对如何处理这个问题有任何想法,请帮忙.谢谢.

-------更新

非常感谢@avgvstvs.这是非常有见地的.Follwd指导方针,不确定我是不是很想念.代码 -

          String              userSID=ESAPI.encoder().encodeForHTMLAttribute(request.getHeader("janus_sid")); session.setAttribute("username",userSID);<input type=hidden name="USERNAME" value="<%= userSID %>"
Run Code Online (Sandbox Code Playgroud)

对于另一个varibale调试,下面是用法

       String debugFlag =  ESAPI.encoder().encodeForJavaScript(request.getParameter("debug"));var debugFlag = "<%= debugFlag%>";if(debugFlag == "y"){       
        document.title=   title + " (" + host + ")";
        defaultAppTitle = title + " (" + host +  ")";           
    }                                                           
Run Code Online (Sandbox Code Playgroud)

最新的Fortify扫描仍然将它们列为漏洞:-(

java xss cross-site esapi fortify

3
推荐指数
2
解决办法
2万
查看次数

标签 统计

esapi ×2

java ×2

cross-site ×1

escaping ×1

fortify ×1

owasp ×1

xss ×1