`
单眼皮小猪
  • 浏览: 122786 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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

阅读更多
最近项目在做安全扫描,扫出来“跨域脚本攻击”的安全漏洞,修复这个漏洞的时候发现了一个问题:
当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实现允许服务跨域请求的方法

    【Java通过Filter实现允许服务跨域请求的方法】 在Web开发中,浏览器的同源策略是一项安全机制,限制了JavaScript只能发起与当前页面同源(协议、域名和端口相同)的HTTP请求。然而,随着前后端分离的发展,跨域...

    解决tomcat跨域问题的jar包

    跨域(Cross-Origin)是浏览器的一种安全机制,它限制了JavaScript只能向同源(协议+域名+端口相同)的网站发送Ajax请求,以防止恶意网站通过脚本获取并操作用户在其他网站上的敏感数据。然而,在实际开发中,我们...

    web项目跨域jar包

    CORS Filter基于Java Servlet规范,可以拦截HTTP请求并添加适当的CORS响应头,允许来自不同源的请求访问服务器资源。这个过滤器的核心在于设置Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-...

    解决javaweb端跨域问题的jar包和文档

    在Java Web开发中,跨域问题是一个常见的挑战,它源于浏览器的同源策略(Same-Origin Policy),该策略限制了Web应用程序只能从同一源获取数据。然而,在实际开发中,我们可能需要从不同的域名、端口或协议下请求...

    服务端解决跨域方法

    简单来说,浏览器不允许一个网站的脚本请求另一个网站的数据。这主要是出于同源策略的安全考虑,即两个不同来源的网页之间的交互必须受到限制,除非被显式允许。 #### 解决跨域的方法 解决跨域问题有两种主要途径...

    跨域jar包.rar

    在Web应用中,由于浏览器的安全策略,不同源(协议+域名+端口)的请求会受到同源策略的限制,而跨域则涉及到打破这一限制,允许不同源之间的通信。 描述中提到的是如何解决本地或服务器端Tomcat服务的跨域问题,...

    ssm跨域jar包和配置

    在处理Web应用程序时,由于浏览器的安全策略,跨域问题常常会出现,阻止了不同源之间的通信。本教程将详细介绍如何在SSM框架中解决跨域问题,主要涉及导入特定的jar包和在`web.xml`中进行配置。 首先,让我们理解...

    cors跨域问题对应的jar包.zip

    `cors-filter`是一个实现了CORS规范的Java过滤器,它允许我们在Tomcat这样的Servlet容器中轻松地配置和管理跨域策略。而`java-property-utils`则是一个实用工具库,用于处理Java属性文件和系统属性,可能在配置CORS...

    jsp防止跨域提交数据的具体实现.docx

    - 跨域攻击可能导致数据泄露或被篡改,甚至可能导致整个系统的安全性受损。 #### JSP中的跨域防护实现 本文提供的案例展示了通过编写自定义过滤器`ArgsIsValidFilter`来实现跨域检查的一种方法。此过滤器主要用于...

    TOMCAT 跨域 CORS Access-Control-Allow-Origin cors-filter

    标题“TOMCAT 跨域 CORS Access-Control-Allow-Origin cors-filter”提及的是在Tomcat服务器上实现CORS策略的一种方式,主要涉及到`Access-Control-Allow-Origin`这个关键的响应头。 `Access-Control-Allow-Origin`...

    Tomcat开启跨域请求jar包

    5. **CorsFilter**:`cors-filter-2.6.jar`中的主要类,它实现了Servlet Filter接口,可以在请求处理链中拦截并处理跨域请求。这个过滤器会检查请求并根据配置的规则添加相应的响应头。 6. **java-property-utils-...

    tomcat浏览器跨域的两个jar包

    安装和配置cors-filter-2.5.jar后,Tomcat将能够处理来自不同源的请求,允许跨域数据交换。 第二个jar包是java-property-utils-1.10.jar,这是一个Java属性工具库,主要用于处理和操作Java的Properties类。在CORS ...

    ajax跨域jar包.zip

    这个jar包可能包含了一些预设好的过滤器(Filter)或拦截器(Interceptor),可以方便地添加到Spring MVC或其它Web框架中,以便在响应中自动添加必要的CORS头部。 使用这个jar包的步骤可能包括: 1. 将jar包添加到...

    COREFILTER.rar

    标题"COREFILTER.rar"指的是一个压缩包文件,其中包含了与跨域访问相关的Java过滤器组件。这个压缩包可能是一个解决方案,帮助开发者处理Web应用程序中的跨域资源共享(CORS)问题。跨域访问是Web开发中的一项重要...

    jsessionid存在的问题及其解决方案

    在Web开发中,`jsessionid`是一个常见的概念,它关联到Java服务器会话(Session)的管理。本文将深入探讨`jsessionid`存在的问题以及相应的解决方案,并结合提供的`DisableUrlSessionFilter.java`和`web.xml`文件来...

    单点登录的demo(使用cookie+filter实现)

    3. **Filter拦截**:每当有新的请求到达时,Filter会检查请求头中的Cookie。如果发现SSO Cookie存在且有效,就认为用户已经登录,允许访问受保护的资源。 4. **跨域共享**:为了在多个子系统间共享登录状态,我们...

    2020-04.rar

    在这个压缩包中,`cors-filter-2.9.jar`很可能是一个实现了CORS过滤器的库,它可以在服务器端添加到Servlet容器中,对HTTP请求进行拦截和处理,允许来自不同源的请求。 CORS过滤器的工作原理通常是,当接收到一个...

    servlet filter大全

    Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者响应离开Servlet之后进行拦截处理。"servlet filter大全"这个主题涵盖了多种常见的过滤器设置,旨在提高应用的功能性和安全性...

    Springmvc ajax跨域请求处理方法实例详解

    浏览器出于安全考虑,默认禁止跨域请求,以避免恶意脚本攻击。 二、SpringMVC 中的跨域请求处理方法 在 SpringMVC 中,我们可以使用 HandlerInterceptorAdapter 或 OncePerRequestFilter 来处理跨域请求问题。下面...

    前后端分离-跨域解决方案.docx

    当一个请求URL的协议、域名、端口中的任意一项与当前页面URL不同时,就认为是跨域请求。例如,如果当前网页位于`http://example.com:8080`,而尝试加载资源`http://another-example.com:80`,则被视为跨域请求。根据...

Global site tag (gtag.js) - Google Analytics