Fortify代码漏洞修复专题

ESAPI安全开发实战

2019-09-24  本文已影响0人  Franchen

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问题的特征和产生的原因,提供了不同的接口:

<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>
<% 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;" />
<script>
    var searchValue = <%=ESAPI.encoder().encoderForJavaScript( searchValue )%>;
</script>
String safe_css = ESAPI.encoder().encoderForCSS( css );
String safe_url = ESAPI.encoder().encodeForURL("/?callback=<script>alert('xss')</script>");
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>
上一篇 下一篇

猜你喜欢

热点阅读