码迷,mamicode.com
首页 > 其他好文 > 详细

commons-lang常用工具类StringEscapeUtils使用

时间:2015-09-25 13:15:42      阅读:1607      评论:0      收藏:0      [点我收藏+]

标签:

在apache commons-lang(2.3以上版本)中为我们提供了一个方便做转义的工具类,主要是为了防止sql注入,xss注入攻击的功能。

commons-lang常用工具类StringEscapeUtils使用 - wjoygz - pauls private zone

1.escapeSql 提供sql转移功能,防止sql注入攻击,例如典型的万能密码攻击‘ ‘ or 1=1 ‘ ‘

1StringBuffer sql = new StringBuffer("select key_sn,remark,create_date from tb_selogon_key where 1=1 ");

2if(!CommUtil.isEmpty(keyWord)){

3sql.append(" and like ‘%" + StringEscapeUtils.escapeSql(keyWord) + "%‘");

2.escapeHtml /unescapeHtml  转义/反转义html脚本

1System.out.println(StringEscapeUtils.escapeHtml("<A>dddd</A>"));   

2输出结果为:

<a>dddd</a>

1System.out.println(StringEscapeUtils.unescapeHtml("<a>dddd</a>"));   

2输出为:

<A>ddd</A>

3.escapeJavascript/unescapeJavascript 转义/反转义js脚本

1System.out.println(StringEscapeUtils.escapeJavaScript("<SCRIPT>alert(‘1111‘)</SCRIPT>

2"));   

3输出为:

<script>alert(‘111‘)</script>

4.escapeJava/unescapeJava 把字符串转为unicode编码

1System.out.println(StringEscapeUtils.escapeJava("中国"));   

2输出为:

用escapeJava方法转义之后的字符串为:/u4E2D/u56FD/u5171/u4EA7/u515A

另一个例子:

import org.apache.commons.lang.StringEscapeUtils;  

public class EscapeString {  

    public static void main(String[] args) throws Exception {  

        String str = "APEC召开时不让点柴火做饭";  

        System.out.println("用escapeJava方法转义之后的字符串为:"+StringEscapeUtils.escapeJava(str));  

        System.out.println("用unescapeJava方法反转义之后的字符串为:"+StringEscapeUtils.unescapeJava(StringEscapeUtils.escapeJava(str)));  

          

        System.out.println("用escapeHtml方法转义之后的字符串为:"+StringEscapeUtils.escapeHtml(str));  

        System.out.println("用unescapeHtml方法反转义之后的字符串为:"+StringEscapeUtils.unescapeHtml(StringEscapeUtils.escapeHtml(str)));  

          

        System.out.println("用escapeXml方法转义之后的字符串为:"+StringEscapeUtils.escapeXml(str));  

        System.out.println("用unescapeXml方法反转义之后的字符串为:"+StringEscapeUtils.unescapeXml(StringEscapeUtils.escapeXml(str)));  

          

        System.out.println("用escapeJavaScript方法转义之后的字符串为:"+StringEscapeUtils.escapeJavaScript(str));  

        System.out.println("用unescapeJavaScript方法反转义之后的字符串为:"+StringEscapeUtils.unescapeJavaScript(StringEscapeUtils.escapeJavaScript(str)));  

        /**输出结果如下: 

     用escapeJava方法转义之后的字符串为:APEC\u53EC\u5F00\u65F6\u4E0D\u8BA9\u70B9\u67F4\u706B\u505A\u996D

用unescapeJava方法反转义之后的字符串为:APEC召开时不让点柴火做饭

用escapeHtml方法转义之后的字符串为:APEC&#21484;&#24320;&#26102;&#19981;&#35753;&#28857;&#26612;&#28779;&#20570;&#39277;

用unescapeHtml方法反转义之后的字符串为:APEC召开时不让点柴火做饭

用escapeXml方法转义之后的字符串为:APEC&#21484;&#24320;&#26102;&#19981;&#35753;&#28857;&#26612;&#28779;&#20570;&#39277;

用unescapeXml方法反转义之后的字符串为:APEC召开时不让点柴火做饭

用escapeJavaScript方法转义之后的字符串为:APEC\u53EC\u5F00\u65F6\u4E0D\u8BA9\u70B9\u67F4\u706B\u505A\u996D

用unescapeJavaScript方法反转义之后的字符串为:APEC召开时不让点柴火做饭

    }  

}  

 

表单富文本输入时,有html,需要转义,html+加中文时,用StringEscapeUtils.escapeHtml转义时,中文也转义了,经过查找,最终找到spring的org.springframework.web.util.HtmlUtils.htmlEscape

1
2
3
4
5
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.0.6.RELEASE</version>
</dependency>

 

 

1
2
3
4
5
6
7
public static void main(String[] args) {
    String a = "<html>吃饭</html>";
    System.out.println(StringEscapeUtils.escapeHtml(a));
    System.out.println(StringEscapeUtils.unescapeHtml(StringEscapeUtils.escapeHtml(a)));
    System.out.println(HtmlUtils.htmlEscape(a));
    System.out.println(HtmlUtils.htmlUnescape(HtmlUtils.htmlEscape(a)));
}

执行结果:

&lt;html&gt;&#21507;&#39277;&lt;/html&gt;

<html>吃饭</html>

&lt;html&gt;吃饭&lt;/html&gt;

<html>吃饭</html>

commons-lang常用工具类StringEscapeUtils使用

标签:

原文地址:http://www.cnblogs.com/thinkpad/p/4837802.html

(2)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!