ESAPI安全开发实战

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 预防XSS,这几招管用 最近重温了一下「黑客帝国」系列电影,一攻一防实属精彩,生活中我们可能很少有机会触及那么深入...
    日拱一兵阅读 513评论 0 1
  • spring官方文档:http://docs.spring.io/spring/docs/current/spri...
    牛马风情阅读 1,781评论 0 3
  • 目 录 一、测试地点/场地|Test sites / testing grounds(11条)二、HTTP代理/编...
    流弊的小白阅读 2,263评论 0 6
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,063评论 0 6
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,125评论 1 13