`
kfcman
  • 浏览: 396983 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

利用StringEscapeUtils对字符串进行各种转义与反转义

    博客分类:
  • java
 
阅读更多

在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)));
}
分享到:
评论

相关推荐

    详解json串反转义(消除反斜杠).docx

    在处理 JSON 数据时,经常会遇到一些字符串需要进行反转义的情况,尤其是在从文件中读取 JSON 字符串并希望将其转换为 JSON 对象时。本文将详细介绍如何对 JSON 串进行反转义操作,并去除其中的反斜杠,以便能够正确...

    详解json串反转义(消除反斜杠)

    在JSON格式中,特殊字符如双引号(")需要通过反斜杠(\)进行转义,以便在字符串中正确地表示它们。然而,当JSON数据以字符串的形式存储或读取时(例如从文件中读取),这些反斜杠可能需要被去除,以便能够使用`...

    消除斜杠commons-lang3-3.12.0工具类.zip

    总结来说,Apache Commons Lang库的`StringEscapeUtils`工具类是Java开发者处理字符串转义和反转义问题的强大助手。特别是在与JSON数据打交道时,`unescapeJson()`方法可以帮助我们有效地去除反斜杠,恢复原始数据,...

    常用字符串操作的实现方式

    七、字符串转义 1、 转义特殊字符:String escaped = StringEscapeUtils.escapeJava("Hello\nWorld"); 输出结果:"Hello\\nWorld" 2、 反转义:String unescaped = StringEscapeUtils.unescapeJava(escaped); 输出...

    字符串的encode/escape

    字符串`escape`通常指的是对特殊字符进行转义,使其能够在特定上下文中正确解析。在编程语言中,例如JavaScript、Python或Java,有一些字符具有特殊含义,如`"`, `\`, `\n`, `\r`等。为了避免这些字符被解释为特殊...

    Java中转义字符反斜杠\的代替方法及repalceAll内涵解析

    Java中转义字符反斜杠的代替方法及repalceAll内涵解析 ...Java中转义字符反斜杠的代替方法需要根据不同的情况选择合适的方法,例如使用StringEscapeUtils工具类或replaceAll方法,以便正确地处理字符串转义问题。

    处理SQL语句commons-lang-2.6.jar

    lang中有一个很有用的处理字符串的工具类,其中之一就是StringEscapeUtils,这个工具类是在2.3版本以上加上的去的,利用它能很方便的进行html,xml,java等的转义与反转义,而且还能对关键字符串进行处理预防SQL注入,...

    commons-lang3-3.4jar.rar

    总之,Apache Commons Lang 3.4库,特别是`StringEscapeUtils`类,是Java开发者处理字符串转义问题的强大工具。通过合理利用这些工具,开发者可以编写出更安全、更健壮的代码,提高应用的稳定性和安全性。

    commons-lang3-3.8.1.rar

    Apache Commons Lang中的`StringEscapeUtils`类是用于处理字符串转义的重要工具,尤其是在防止跨站脚本(XSS)攻击方面。XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本到网页中,使用户在不知情的情况下执行...

    domino xpages 显示双引号

    但如果你的字符串内容中包含与包围它的引号相同的类型,就需要使用转义字符`\`。比如,`var str = "He said, \"Hello!\"";` 这里,反斜杠`\`告诉JavaScript解析器,接下来的双引号不是字符串的结束,而是字符串的一...

    JakartaCommons 详细教程更助于你的基础

    - StringEscapeUtils:字符串转义和反转义的方法。 - SystemUtils:提供获取系统属性的方法。 - Validate:数据验证工具类,提供非空验证、类型验证等。 - WordUtils:用于对字符串中的单词进行操作,如大小写转换。...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    在实际操作中,这可能会涉及到字符串转义、参数安全传递以及shell命令的构建等多个技术点。 首先,我们需要理解DataX的工作原理。DataX作为一个数据同步框架,支持多种数据源,如Oracle、PostgreSQL等,并提供了...

    commons-lang3-3.1.jar.zip-java Html解码组件库

    Apache Commons Lang 包含了一个名为`StringEscapeUtils`的类,它是处理字符串转义的关键。在这个3.1版本中,`StringEscapeUtils`提供了一个`unescapeHtml()`方法,可以将HTML编码的字符串解码为原始的非转义格式。...

    commons-lang3-3.1_jar

    3. **JavaScript转义**:`StringEscapeUtils.escapeJavaScript(String input)`方法转义JavaScript中的特殊字符,如将 `\` 转义为 `\\`,确保字符串在JavaScript环境中安全使用。 4. **SQL转义**:虽然Apache ...

    commons-lang-2.6.jar工具类以及文档

    这个类提供了各种字符串转义功能,比如将HTML、XML、JavaScript或SQL的特殊字符转义,避免注入攻击。例如,`escapeHtml()`可以将字符串中的HTML实体转换为它们的安全等价物,`unescapeJava()`则可以反转这个过程。 ...

    xe5 android Escape UnicodeString to String

    在Android开发中,经常需要处理字符串的编码问题,特别是在与服务器进行JSON数据交换时。"xe5 android Escape UnicodeString to String" 这个主题涉及到的是如何将包含Unicode转义序列的字符串转换为可读的UTF-8编码...

    看例子练apache_commons之lang篇

    `StringEscapeUtils` 类提供了对字符串进行转义和去转义的方法。 - **StringEscapeUtils.escapeHtml4()**: 转义HTML字符。 - **StringEscapeUtils.unescapeHtml4()**: 去转义HTML字符。 #### 九、StringUtils 的...

    Struts2-007简单分析1

    在修复后的代码中,可以看到Struts2使用了Apache Commons Lang库的`StringEscapeUtils`类来转义用户输入,确保了字符串的安全性。这样的修改阻止了直接的命令注入,增加了攻击者的难度。 总的来说,Struts2-007漏洞...

    XSS防攻击实现

    例如,创建一个名为`StringEscapeEditor`的类,继承自`PropertyEditorSupport`,并在`setAsText`方法中对字符串进行HTML转义,确保所有接收到的用户输入都得到安全处理。 以下是一个`StringEscapeEditor`的示例代码...

    java防止xss注入

    1. **Apache Commons Lang**:提供`StringEscapeUtils`类,可以方便地进行字符串转义。 2. **Spring MVC**:自动对视图模型中的数据进行转义,但需开启`web.servlet.view.EscapeHtml`属性或使用`@ResponseBody`注解...

Global site tag (gtag.js) - Google Analytics