JAVA 安全编程——ESAPI与OWASP Top 10

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字符被浏览器解析。

被encodeForHTML转义结果:

xss弹窗失败

这种超链接要用 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 allowedExtension = new ArrayList();

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

你可能感兴趣的:(JAVA 安全编程——ESAPI与OWASP Top 10)