ESAPI安全开发实战

作者: Franchen | 来源:发表于2019-09-24 17:29 被阅读0次

    ESAPI(Enterprise Security API)是一个免费开源的Web应用程序API,目的帮助开发者开发出更加安全的代码,并且它本身就很方便调用。

    官方API文档:https://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0

    ESAPI 安装(JAVA)

    1. 下载 ESAPI 的 Jar包 和 源码
    2. 下载 Log4j(一定要导入这个jar包,没有会报错的!)
    3. JAVAEE项目中,将 esapi.jarlog4j.jar 放到 WEB-INF 下的 lib 目录里面。

    ESAPI 防护XSS跨站脚本攻击

    ESAPI提供了两个相关接口 Encode、Validator 来防护XSS攻击。

    Encode接口

    Encode(编码器接口)包含了许多解码输入和编码输出的方法,这样处理过的字符对于各种解释器都是安全的。
    ESAPI根据XSS问题的特征和产生的原因,提供了不同的接口:

    • HTML编码器(encodeForHTML)
    <body>
     <table>
         <tr>
             <% String msg = "<script>alert('xss')</script>";
             <td> <%=ESAPI.encoder().encodeForHTML(  msg ) %></td>
            <!-- <td>  &lt;script&gt;alert('xss')&lt;/script&gt; </td> -->
         </tr>
     </table>
     </body>
    
    • HTML属性编码器(encodeForHTMLAttribute)
    <% String img_url = "\" /><script>alert('xss')</script><img src=\"";
    <img src="<%=ESAPI.encoder().encodeForHTMLAttribute(  img_src  ) %>" />
    // out
    <img src="&quot;&#x20;/&gt;&lt;script&gt;alert('xss')&lt;/script&gt;&lt;img&#x20;src=&quot;" />
    
    • JavaScript编码器(encoderForJavaScript)
    <script>
        var searchValue = <%=ESAPI.encoder().encoderForJavaScript( searchValue )%>;
    </script>
    
    • CSS编码器(encoderForCSS)
    String safe_css = ESAPI.encoder().encoderForCSS( css );
    
    • URL编码器(encodeForURL)
    String safe_url = ESAPI.encoder().encodeForURL("/?callback=<script>alert('xss')</script>");
    
    • VBScript编码器(encodeForVBScript)
    String vb = ESAPI.encoder().encodeForVBScript("add(1)");
    
    • 复合(嵌套)编码器
    <script>
        var vDiv= document.createElement('div');
        vDiv.innerHTML ="<%=ESAPI.encoder.encodeForJS(ESAPI.encoder.encodeForHTML(divVALUE))%>";
        document.body.appendChild(vDiv);
    </script>
    

    相关文章

      网友评论

        本文标题:ESAPI安全开发实战

        本文链接:https://www.haomeiwen.com/subject/ijcbuctx.html