# 0.配置和导包

1.导入包
    <dependencies>
        <dependency>
            <groupId>org.owasp.esapi</groupId>
            <artifactId>esapi</artifactId>
            <version>2.1.0</version>
        </dependency>
    </dependencies>
2.添加配置文件
https://github.com/ESAPI/esapi-java-legacy/tree/develop/configuration/esapi


备注:如果是spring结合只需要将配置文件拷贝到resources中即可,参考文件最好都拷贝过去否则可能报缺失文件

# 1.XSS防护

String s = "<script>alert(1)</scirpt>'\"";
String s2 = ESAPI.encoder().encodeForHTML(s);
System.out.println(s2);

# 2.SQL注入防护

# 2.1 mysql防护

String id ="1 and 1=1 and '1'='1";
String mysql_query ="SELECT user_id FROM user_data WHERE id = " + ESAPI.encoder().encodeForSQL(new MySQLCodec(MySQLCodec.Mode.STANDARD),id);
System.out.println(mysql_query); // SELECT user_id FROM user_data WHERE id = 1 and 1\=1 and \'1\'\=\'1

# 2.2 oracle防护

OracleCodec oracleCodec = new OracleCodec();
String id ="1 and 1=1 and '1'='1";
String oracle_query ="SELECT user_id FROM user_data WHERE id = " + ESAPI.encoder().encodeForSQL(oracleCodec,id);
System.out.println(oracle_query);

# 3.命令执行防护

WindowsCodec windowsCodec = new WindowsCodec();  //适用于window下
UnixCodec unixCodec = new UnixCodec();  //适用于linux平台下
cmd="ifconfig | echo 1";
String s1 = ESAPI.encoder().encodeForOS(unixCodec, cmd);  //引用linux平台
System.out.println(s1); //  ifconfig\ \|\ echo\ 1

# 4.XML过滤

String xml_encoder = ESAPI.encoder().encodeForXML(String xmlString);

# 5.富文本过滤xss内容

//1.首先需要将antisamy-esapi.xml 复制到资源目录下:可放置到/home/user/esapi/antisamy-esapi.xml等
//2.配置文件获取路径:https://github.com/ESAPI/esapi-java-legacy/tree/develop/configuration/esapi
String ss = "123kjsdlkjfsdf<script>alert(1)</script>";
String script = ESAPI.validator().getValidSafeHTML("", ss, ss.length(), true);
System.out.println(script);  // 123kjsdlkjfsdf