`

转义处理

    博客分类:
  • Java
阅读更多

commons.lang

StringEscapeUtils 处理字符转义与反转义

 

 

common.utils;

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import org.springframework.web.util.HtmlUtils;

public class StringUtilsTest {

    @Test
    public void test() {
        String str="你好呀,<input>这里真不错!";
        
//       ---JavaScript
//        String javascriptStr="<script>alert('你好111')</script>";
//    	System.out.println(StringEscapeUtils.escapeJavaScript(javascriptStr));
//    	System.out.println(StringEscapeUtils.unescapeJavaScript(javascriptStr));
        //输出 <script>alert(\'111\')</script>
//    	<script>alert('111')</script>
//        ----SQL
//        StringBuffer sql = new StringBuffer("select * from inf_moderator_info info  where 1=1  ");
//        if(!CommUtil.isEmpty(keyWord)){
//        String keyWord = " ' or 1=你好1 '";
//        String keyWord = "很好%";
//        System.out.println(StringEscapeUtils.escapeSql(keyWord));
//        sql.append(" and info.introduction like '%" + StringEscapeUtils.escapeSql(keyWord) + "%'");
//        System.out.println(sql);
    	//输出 '' or 1=1 ''
    	
//    	--html
//    	String html="<A>你好dddd</A>";
//    	System.out.println(StringEscapeUtils.escapeHtml(html));
//    	System.out.println(StringEscapeUtils.unescapeHtml(html));
    	
//    	--escapeJava/unescapeJava 把字符串转为unicode编码
//    	String java="你好dddd";
//    	System.out.println(StringEscapeUtils.escapeJava(java));
//    	System.out.println(StringEscapeUtils.unescapeJava(java));
//        \u4F60\u597Ddddd
//        你好dddd
    	
//    	String xml="你好dddd";
//    	System.out.println(StringEscapeUtils.escapeXml(xml));
//    	System.out.println(StringEscapeUtils.unescapeXml(xml));
//    	&#20320;&#22909;dddd
//        你好dddd
        
        
    	String a = "<html>吃饭</html>' or 1=1 '<input></input>";
		System.out.println(StringEscapeUtils.escapeHtml(a));
//		a=StringEscapeUtils.escapeHtml(a);
//		System.out.println(StringEscapeUtils.unescapeHtml(StringEscapeUtils.escapeHtml(a)));
//		System.out.println(HtmlUtils.htmlEscape(a));
		System.out.println(HtmlUtils.htmlUnescape(a));
		System.out.println(StringEscapeUtils.unescapeHtml(HtmlUtils.htmlEscape(a)));
		
//		&lt;html&gt;&#21507;&#39277;&lt;/html&gt;&lt;input&gt;&lt;/input&gt;
//		<html>吃饭</html><input></input>
//		&lt;html&gt;吃饭&lt;/html&gt;&lt;input&gt;&lt;/input&gt;
//		<html>吃饭</html><input></input>
		
		
//        System.out.println(escapeStr(str));
    } 
    public static String escapeStr(String str) {
		if (StringUtils.isEmpty(str)) {
			return "";
		}
		str = StringEscapeUtils.escapeSql(str);
		str = StringEscapeUtils.escapeHtml(str);
//		str = StringEscapeUtils.escapeJava(str);
//		str = StringEscapeUtils.escapeJavaScript(str);
		return str;
	}

	/**
	 * 字符反转义
	 * 
	 * @param str
	 * @return
	 */
	public static String unescapeStr(String str) {
		if (StringUtils.isEmpty(str)) {
			return "";
		}
		str = StringEscapeUtils.unescapeHtml(str);
		str = StringEscapeUtils.unescapeJava(str);
		str = StringEscapeUtils.unescapeJavaScript(str);
		return str;
	}
}

 

 

 

 

 

分享到:
评论

相关推荐

    Mybatis自定义拦截器,对模糊查询传值的特殊字符(\,_,%)统一进行转义处理的代码

    代码包含: EscapeUtil.java:特殊字符(\,_,%)转义工具类 MyQueryInterceptor.java: Mybatis自定义拦截器 注意:该拦截器只支持QueryWrapper的like方法,serviceImpl层传全角模糊查询(%%) mapper或xml层的全角模糊查询(%...

    Mybatis在Mapper.xml文件中的转义字符处理方式.pdf

    [CDATA[内容]]&gt;`,这样可以直接在Mapper.xml文件中嵌入原始的SQL语句,而无需进行转义处理。 例如,要在Mapper.xml文件中写入一段包含大于号的SQL语句,可以直接使用CDATA来避免转义: ```xml &lt;![CDATA[ SELECT...

    Mybatis自定义拦截器,对模糊查询传值的特殊字符统一进行转义处理的代码

    特殊字符(\,_,%)转义工具类 MyQueryInterceptor.java: Mybatis自定义拦截器 注意:该拦截器只支持QueryWrapper的like方法,serviceImpl层传全角模糊查询(%%) mapper或xml层的全角模糊查询(%*%)和半角模糊查询(%*或*%)

    JQuery对id中含有特殊字符的转义处理示例

    为了正确地选择这些ID,我们需要进行转义处理。以下将详细解释如何在jQuery中处理这种情况。 首先,理解为什么需要转义。在CSS和jQuery选择器中,方括号`[]`用于属性选择器,斜线`/`在正则表达式中具有特殊含义。...

    转义表单提交字符处理函数

    ### 转义表单提交字符处理函数 在Web开发中,确保用户输入的数据安全是非常重要的。不正确的处理可能会导致诸如XSS(跨站脚本攻击)等安全问题。因此,对用户提交的数据进行适当的转义是至关重要的。本文将详细介绍...

    pymysql 插入数据 转义处理方式

    特殊字符,如反斜线(\)在SQL语句中具有特殊的含义,如果不进行转义处理,可能会导致SQL语句执行错误,甚至引起安全问题。 在使用pymysql插入数据之前,通常采用`connection.escape(str)`方法对字符串数据进行转义...

    常用HTML转义字符,html转义符,JavaScript转义符,html转义字符表,HTML语言特殊字符对照表(ISO Latin-1字符集) - 来源:嘻嘻网 114_xixik_com_files

    因此,开发者在插入用户输入的数据到网页时,应确保对特殊字符进行转义处理,以保障网站的安全性。 总的来说,了解和掌握HTML转义字符、JavaScript转义符以及相关的字符对照表,是成为合格的前端开发者的基本技能。...

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

    当我们从文件或其他非内存存储中读取 JSON 字符串时,这些字符串通常已经经过了转义处理。如果不进行反转义操作,直接使用 `JSON.parse()` 方法将会导致语法错误,因为 JSON 解析器期望的是未转义的原始 JSON 数据。...

    插入数据库之前将特殊字符转义

    在编程和数据库交互时,确保数据安全至关重要,尤其是在插入数据到数据库之前,必须对特殊字符进行转义处理。这是因为不转义的特殊字符可能导致SQL注入等安全问题,从而造成数据破坏、信息泄露甚至整个系统的瘫痪。...

    从后台传来的接口,小程序的转义

    在小程序中,接收后端接口数据时,如果数据包含HTML特殊字符,我们需要在渲染到页面之前对它们进行转义处理。微信小程序提供了`wx escape`方法,可以用于对字符串进行转义。例如: ```javascript let unsafeString ...

    JAVA实现html转义字符及css清除_.docx

    为了解决这个问题,可以使用Java来实现对这些特殊字符的转义处理。 #### 三、代码分析 下面是一段示例代码,用于清除HTML标签,并提供了一些额外的功能: ```java import java.util.HashMap; import java.util.Map...

    Java正则表达式处理特殊字符转义的方法

    在Java中,使用正则表达式处理特殊字符转义时,可能会遇到一些问题。例如,尝试使用`*`作为正则表达式的部分时,如果不进行转义,会抛出`java.util.regex.PatternSyntaxException: Dangling meta character '*' near...

    正则基础之 神奇的转义

    在VB.NET中,字符串的定义方式与C#中的verbatim字符串类似,不需要额外的转义处理。例如: ```vbnet Dim test As String() = New String() {"\", "\\"} Dim reg As New Regex("\$") For Each s As String In test ...

    浅谈html转义及防止javascript注入攻击的方法.docx

    现代前端框架如React、Vue等通常内置了安全机制,可以自动对用户输入的数据进行转义处理,开发者只需遵循框架的最佳实践即可。 #### 三、案例分析 假设在一个简单的聊天应用中,用户输入了一段包含JavaScript代码...

    ibatis sql语句对条件中特殊字符% # 处理

    通过对ibatis框架下SQL语句中特殊字符处理方法的详细分析,我们可以看到,合理地使用字符串转义处理结合动态SQL标签,可以有效地解决特殊字符带来的问题。这样不仅可以保证查询的准确性,还可以提高代码的健壮性和...

    易语言-文本转义格式化

    易语言的文本处理功能强大且灵活,能够方便地处理这些转义字符。在描述中提到的"文本转义格式化源码"是一个基础的实现,它仅包含了`\t`、`\r`和`\n`这三个基本的转义字符处理。对于更复杂的转义序列,如`\b`(退格符...

    转义字符的通用处理方式

    NULL 博文链接:https://herry.iteye.com/blog/1976955

    php实现处理输入转义字符的代码

    这是为了确保在所有情况下,获取的数据都经过了正确的转义处理,从而避免潜在的安全漏洞。 另一个相关的设置是magic_quotes_runtime,它影响从外部数据源获取的数据是否被反斜线转义。这个选项可以在运行时被修改,...

Global site tag (gtag.js) - Google Analytics