在apache commons-lang(2.3以上版本)中为我们提供了一个方便做转义的工具类,主要是为了防止sql注入,xss注入攻击的功能。总共提供了以下几个方法:
![](https://i-blog.csdnimg.cn/blog_migrate/203723a0ff477e2a1bcd2f1c9133841e.jpeg)
1.escapeSql 提供sql转移功能,防止sql注入攻击,例如典型的万能密码攻击' ' or 1=1 ' '
1 | StringBuffer sql = new StringBuffer( "select key_sn,remark,create_date from tb_selogon_key where 1=1 " ); |
2 | if(!CommUtil.isEmpty(keyWord)){ |
3 | sql.append( " and like '%" + StringEscapeUtils.escapeSql(keyWord) + "%'" ); |
2.escapeHtml /unescapeHtml 转义/反转义html脚本
1 | System.out.println(StringEscapeUtils.escapeHtml( "<a>dddd</a>" )); |
2 | 输出结果为:<a>dddd</a> |
1 | System.out.println(StringEscapeUtils.unescapeHtml( "<a>dddd</a>" )); |
3.escapeJavascript/unescapeJavascript 转义/反转义js脚本
1 | System.out.println(StringEscapeUtils.escapeJavaScript( "<script>alert('1111')</script>" )); |
2 | 输出为:<script>alert( '111' )</script> |
4.escapeJava/unescapeJava 把字符串转为unicode编码
1 | System.out.println(StringEscapeUtils.escapeJava( "中国" )); |
2 | 输出为:用escapeJava方法转义之后的字符串为:/u4E2D/u56FD/u5171/u4EA7/u515A |