当前位置:首页 > 开发 > 编程语言 > Java > 正文

JAVA跨域脚本攻击,filter中拦截不到数据

发表于: 2014-06-06   作者:单眼皮小猪   来源:转载   浏览:
摘要: 最近项目在做安全扫描,扫出来“跨域脚本攻击”的安全漏洞,修复这个漏洞的时候发现了一个问题: 当FORM 表单中设置encType="multipart/form-data",filter中将拦截不到此表单数据,查看了一些源码发现此数据都是封装到multipartServeletRequest中的,但是能拿到这些数据,但是过滤之后,这些数据无法放回去。 导致此问题无法解决,问
最近项目在做安全扫描,扫出来“跨域脚本攻击”的安全漏洞,修复这个漏洞的时候发现了一个问题:
当FORM 表单中设置encType="multipart/form-data",filter中将拦截不到此表单数据,查看了一些源码发现此数据都是封装到multipartServeletRequest中的,但是能拿到这些数据,但是过滤之后,这些数据无法放回去。
导致此问题无法解决,问过公司架构师,貌似他们也没有好的方法。只能建议,有上传功能时,单独上传,跟数据上传分开做。

对于普通的form表单,修复此漏洞,只需将request.getParameterMap()中的数据迭代替换。
由于项目保密问题,以下是关键代码:
public class aaa implements Filter {
	public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException {
		setReplaceStr(filterConfig.getInitParameter("replaceStr"));//replaceStr变量 get和set方法
			setExcludeParamName(filterConfig
					.getInitParameter("excludeParamName"));//excludeParamName变量 get和set方法

cleanParameters(request.getParameterMap());
		filterChain.doFilter(req, response);
	}
private void cleanParameters(Map original) {
		for (Object key : original.keySet()) {

			Object value = original.get(key);
			if (value instanceof String[]) {
				// 不需要过滤的参数名
				if (getExcludeParamNames() != null
						&& getExcludeParamNames().contains(key)) {
					parameterMap.put(key, (String[]) value);
				} else {
					parameterMap.put(key, clean((String[]) value));
				}
			} else {
				parameterMap.put(key, value);
			}
		}
	}
private String[] clean(String[] values) {
		List<SensitiveKeyFilterKey> keys = null;
		String[] clean = new String[values.length];
		for (int i = 0; i < clean.length; i++) {
			// 清理xss攻击
			clean[i] = Jsoup.clean(values[i], TagWhitelist.defaultWhitelist());
					}
		return clean;
	}
}


其中Jsoup是一个开源的jar包,网上可以搜索到,在此不上传了。

JAVA跨域脚本攻击,filter中拦截不到数据

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号