欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

commons-lang常用工具类StringEscapeUtils使用--转

发布时间:2025/4/5 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 commons-lang常用工具类StringEscapeUtils使用--转 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

https://my.oschina.net/ydsakyclguozi/blog/341496

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

commons-lang常用工具类StringEscapeUtils使用:

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

  StringBuffer sql = new StringBuffer("select key_sn,remark,create_date from tb_selogon_key where 1=1 ");if(!CommUtil.isEmpty(keyWord)){sql.append(" and like '%" + StringEscapeUtils.escapeSql(keyWord) + "%'");

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

System.out.println(StringEscapeUtils.escapeHtml("<A>dddd</A>")); 输出结果为:<a>dddd</a>System.out.println(StringEscapeUtils.unescapeHtml("<a>dddd</a>")); 输出为:<A>ddd</A>

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

System.out.println(StringEscapeUtils.escapeJavaScript("<SCRIPT>alert('1111')</SCRIPT>")); 输出为:<script>alert('111')</script>

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

System.out.println(StringEscapeUtils.escapeJava("中国")); 输出为:用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

<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.0.6.RELEASE</version> </dependency> 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>

感觉还是spring好,一点一滴的比较贴心。

转载于:https://www.cnblogs.com/davidwang456/p/9002505.html

总结

以上是生活随笔为你收集整理的commons-lang常用工具类StringEscapeUtils使用--转的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。