ESAPI是owasp提供的一套API级别的web应用解决方案。简单的说,ESAPI就是为了编写出更加安全的代码而设计出来的一些API,方便使用者调用,从而方便的编写安全的代码;下图显示提供的API与OWASP列出的10个安全问题的关联关系:
相关API介绍可以查看官方文档:https://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0
ESAPI安装:
下载地址:https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API#tab=Downloads
下载Log4j (log4j-1.2.17.zip)(一定要导入这个jar包,没有会报错的!)
http://logging.apache.org/log4j/1.2/download.html
将jar包和源码Download下来在Resources目录里面导入ESAPI.properties 、 validation.properties 两个配置文件:
两个配置文件就在下载的ESAPI for Java(source)里面ESAPI使用:
针对XSS漏洞:
编码输出,即“转义”,是用来确保字符被视为数据,而不是作为HTML字符被浏览器解析。<script>alert(1)</script>被encodeForHTML转义结果:
xss弹窗失败<a href="javascript:alert(1)" />这种超链接要用 encodeForURL接口,否则:
具体demo可以参见:https://github.com/littlebin404/XssTest.git
针对SQL注入:
input = ESAPI.encoder().encodeForSQL(newMySQLCodec(MySQLCodec.Mode.STANDARD),input);
验证输入:
input = ESAPI.validator().getValidInput("",input,"Email",11,false);
验证恶意文件
String inputfilename ="a.txt";
ArrayList<String> allowedExtension = new ArrayList<String>();
allowedExtension.add("jpg");
if(!ESAPI.validator().isValidFileName("upload",inputfilename, allowedExtension,false)){
System.out.println("文件名不合法!");
}
//获取随机文件名
ESAPI.randomizer().getRandomFilename("jpg");
更多参考:
WEB安全编程技术规范:https://wenku.baidu.com/view/c24d4e642af90242a895e588.html
网友评论