`
ancoa
  • 浏览: 1619 次
  • 性别: Icon_minigender_1
  • 来自: 太原
最近访客 更多访客>>
社区版块
存档分类
最新评论

org.apache.commons.lang3.StringEscapeUtils注意事项

 
阅读更多

 最近客户安全管理组扫描已交付的程序,发现程序存在xss漏洞,于是要求修复。修复的建议是将请求的所有url和参数做过滤。于是有同事在增加了一个过滤器,这个过滤器继承了HttpServletRequestWrapper类,代码如下:

import java.net.URLDecoder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

import org.apache.commons.lang3.StringEscapeUtils;

public class XSSRequestWrapper extends HttpServletRequestWrapper {
	public XSSRequestWrapper(HttpServletRequest servletRequest) {
		super(servletRequest);
	}

	public String[] getParameterValues(String parameter) {
		String[] values = super.getParameterValues(parameter);
		if (values == null) {
			return null;
		}
		int count = values.length;
		String[] encodedValues = new String[count];
		for (int i = 0; i < count; i++) {
			encodedValues[i] = stripXSS(values[i]);
		}
		return encodedValues;
	}

	public String getRequestURI() {
		String uri = super.getRequestURI();
		try {
			uri = URLDecoder.decode(uri, "UTF-8");
		} catch (Exception e) {
		}
		return stripXSS(uri);
	}

	public String getParameter(String parameter) {
		String value = super.getParameter(parameter);
		return stripXSS(value);
	}

	public String getHeader(String name) {
		String value = super.getHeader(name);
		return stripXSS(value);
	}

	private String stripXSS(String value) {
		if (value != null) {
			value = StringEscapeUtils.escapeHtml3(value);
		}
		return value;
	}
}

 在这个类中,引用了org.apache.commons.lang3.StringEscapeUtils,使用了StringEscapeUtils类的public static final String escapeHtml3(String input)方法对请求中的参数做过滤。

Struts的方法在收到这个前台页面发送来请求时,处理请求。其中,取得参数时,发现经过ajax传递到后台参数中的中文都被转成中文了。后来在后台的方法中获取参数后再调用StringEscapeUtils的另一个方法转码就无问题了。

		String json = request.getParameter("jsonStr");
		json = StringEscapeUtils.unescapeHtml3(json);

 

分享到:
评论

相关推荐

    org.apache.commons.lang jar包下载(commons-lang3-3.1.jar)

    org.apache.commons.lang.StringEscapeUtils.class org.apache.commons.lang.StringUtils.class org.apache.commons.lang.SystemUtils.class org.apache.commons.lang.UnhandledException.class org.apache....

    org.apache.commons.lang jar包下载

    org.apache.commons.lang.StringEscapeUtils.class org.apache.commons.lang.StringUtils.class org.apache.commons.lang.SystemUtils.class org.apache.commons.lang.UnhandledException.class org.apache....

    org.apache.commons.lang.StringEscapeUtils

    解决json数据中,返回的数据格式中带有反...如下所示{\"Count\":\"3\",\"ErrorString\":\"\",\"Success\":true,\"URL\":\"http:\\\/\\\/172.16.80.65:8080\\\/LoginSSO.aspx?UserCode=wubg&Type=WorkItem\",\"UserId\":

    commons-lang.jar

    org.apache.commons.lang.StringEscapeUtils.class org.apache.commons.lang.StringUtils.class org.apache.commons.lang.SystemUtils.class org.apache.commons.lang.UnhandledException.class org.apache.commons....

    org.apache.commons包

    Apache Commons 是一个由 Apache...使用Apache Commons时,注意阅读官方文档,了解每个类和方法的功能,以确保正确和有效地利用这些工具。同时,遵循良好的编程实践,如适当的错误处理和资源管理,可以避免潜在的问题。

    commons-lang3-3.4-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-lang3:3.4; 标签:apache、commons、lang3、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    commons-lang3-3.1 API

    这一组API的所有包名都以org.apache.commons.lang开头,共有如下8个包: org.apache.commons.lang org.apache.commons.lang.builder org.apache.commons.lang.enum org.apache.commons.lang.enums org.apache....

    commons-lang3-3.4jar.rar

    在"commons-lang3-3.4.jar"这个压缩包中,我们关注的是Apache Commons Lang 3.4版本,它是该项目的一个重要里程碑。此库包含了各种各样的功能,帮助开发者处理日常编程任务,提高代码效率和可读性。 `...

    commons-lang3-3.4.rar

    commons-lang3-3.4.rar,包括org.apache.commons.lang.StringEscapeUtils类。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    在Java中轻松将HTML格式文本转换为纯文本(保留换行)

    第一步:引入Jsoup和lang和lang3的依赖: ...lang和lang3这两个包里有转换所需的工具类 ...import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.jsoup.Jsoup; im

    commons-lang3-3.6.jar

    commons-lang可以将html转以后的...String convStr = StringEscapeUtils.unescapeHtml(str);//apache的jar包:commons-lang-*.jar可以将html转换的符号转换过来(网上抄来的) Sysout(convStr);//“!@#¥%……&——+”

    commons-lang3-3.8.1.rar

    在本案例中,我们关注的是"commons-lang3-3.8.1.jar",这是Apache Commons Lang项目的版本3.8.1的归档文件。这个JAR文件包含了Lang项目的所有类和资源,便于开发者在自己的项目中导入和使用。 Apache Commons Lang...

    commons-lang3-3.1_jar

    这个`commons-lang3-3.1_jar`是Apache Commons Lang项目的一个版本,它提供了大量的类和实用方法,以增强Java语言的功能。在Java开发中,这个库非常常见,能够帮助开发者更高效、便捷地处理各种编程任务。 `...

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

    Apache Commons Lang是Java开发的一个非常重要的工具库,它提供了大量实用的工具类,极大地扩展了Java标准库中关于字符串操作的功能。在这个"commons-lang-2.6.jar"中,我们找到了许多对字符串处理非常有用的类和...

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

    这个压缩包"消除斜杠commons-lang3-3.12.0工具类.zip"显然包含了一个名为"commons-lang3-3.12.0"的库,这是一个非常流行的Apache Commons Lang库的版本,它提供了大量的实用工具类,用于增强Java的内置String类和...

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

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

    commons-lang3-3.12.0-bin.zip

    这个压缩包"commons-lang3-3.12.0-bin.zip"包含了Apache Commons Lang的3.12.0版本,这是一个非常重要的版本更新,提供了许多新特性和性能改进。 Apache Commons Lang 3.12.0主要包含以下核心知识点: 1. **基本...

    commons-lang3-3.0-beta-bin.zip

    在标题中提到的"commons-lang3-3.0-beta-bin.zip"是一个包含Apache Commons Lang 3.0 beta版本的压缩包,这个版本是该项目的一个早期预发布版本,可能包含了新的特性和改进,但同时也可能存在一些未解决的问题。...

    commons-lang-2.1.tar.gz

    Apache Commons Lang 是一个Java语言工具包,包含了大量用于处理日常编程任务的实用工具类。这个压缩包"commons-lang-2.1.tar.gz"是Apache Commons Lang项目的一个具体版本,即2.1版本。Apache Commons Lang提供了对...

Global site tag (gtag.js) - Google Analytics