`
__SuRa丶Rain
  • 浏览: 44247 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

Java Web 过滤Xss 代码

阅读更多

    随着社会的发展,企业对项目的要求越来越高,特别是和安全相关的项目,要求不能有注入,Xss等等。博主今天分享一个过滤Xss代码的过滤器。

 

package com.vti.filter;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class RequestParameterFilter implements Filter {
       //此处是不过滤的参数
	private List<String> excludeNames;

	public List<String> getExcludeNames() {
		return excludeNames;
	}
	
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		request = new MyHttpServletRequestWrapper((HttpServletRequest) request);
		chain.doFilter(request, response);
	}
	
	public void init(FilterConfig config) throws ServletException {
		String exclude = config.getInitParameter("exclude");
		if (exclude != null && exclude.length() > 0) {
			excludeNames = Arrays.asList(exclude.split(","));
		}
	}

	public void destroy() {};
	
	private class MyHttpServletRequestWrapper extends HttpServletRequestWrapper {

		public MyHttpServletRequestWrapper(HttpServletRequest request) {
			super(request);
		}

		public String getParameter(String name) {
			if (excludeNames != null && excludeNames.contains(name)) {
				return super.getParameter(name);
			}
			return replaceXss(super.getParameter(name));
		}

		public String[] getParameterValues(String name) {
			if (excludeNames != null && excludeNames.contains(name)) {
				return super.getParameterValues(name);
			}
			
			String [] params=super.getParameterValues(name);
			
			for (int i = 0; i < params.length; i++) {
				params[i]=replaceXss(params[i]);
			}
			
			return params;
		}
	}
	
	protected String replaceXss(String value) {
		if (value != null && value.length() > 0) {
			//此处还能加更多的过滤规则
			value=value.replace("<","&lt;");
			value=value.replace(">","&gt;");
			return value;
		}
		return value;
	}
	
}

 

看到这,想必大家都懂了。最后演示下怎么使用:

 

	<filter>
		<filter-name>Xss Filter</filter-name>
		<filter-class>com.vti.filter.RequestParameterFilter</filter-class>
		<init-param>
			<param-name>exclude</param-name>
			<param-value>option</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>Xss Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

分享到:
评论

相关推荐

    java web Xss及sql注入过滤器.zip

    java web 过滤器防止Xss、sql注入,基于spring boot 2.0框架开发。

    Java防止xss攻击附相关文件下载

    首先说一下思路,防止这种类似于注入攻击,就是使用拦截器(Filter)处理特殊字符或过滤特殊字符 今天介绍一个方法,利用覆盖Servlet的getParameter方法达到处理特殊字符的目的来解决(防止)Xss攻击 web.xml,需要的...

    java过滤器,防止XSS、SQL

    java过滤器,XSS : 跨站脚本攻击(Cross Site Scripting),SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

    防止XSS攻击解决办法

    防止XSS攻击简单实用的解决办法,直接复制两个过滤器,然后配置web.xml即可实现

    自动绕过 XSS过滤器_Java_代码_相关文件_下载

    动绕过 XSS 过滤器 概述 snuck 是一个自动工具,其目标是通过基于反射上下文的专门注入来显着测试给定的 XSS 过滤器。这种方法采用 Selenium 来驱动 Web 浏览器来重现攻击者和受害者的行为。 更多详情、使用方法,...

    预防XSS攻击和SQL注入XssFilter

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin...

    JSP过滤器防止Xss漏洞的实现方法(分享)

    在用java进行web业务开发的时候,对于页面上接收到的参数,除了极少数是步可预知的内容外,大量的参数名和参数值都是不会出现触发Xss漏洞的字符。而通常为了避免Xss漏洞,都是开发人员各自在页面输出和数据入库等...

    文本过滤NHtmlFilter v1.0源码2012811

    如何防止XSS攻击,在.net做web开发上真的很弱。 底层框架,基础类库是很不完善。又是做互联网应用,安全总是要考虑的吧。 今天要解决的一个小问题就是过滤掉用户上传的html文本中的脚本。 在网上查了一下没有找到...

    JSP使用过滤器防止Xss漏洞

    在用java进行web业务开发的时候,对于页面上接收到的参数,除了极少数是步可预知的内容外,大量的参数名和参数值都是不会出现触发Xss漏洞的字符。而通常为了避免Xss漏洞,都是开发人员各自在页面输出和数据入库等...

    AntiSamy Xss跨站脚本攻击WebService War包下载

    在.net环境里,一直没有好的Xss跨站脚本攻击过滤工具,于是将Java下的AntiSamy封装成了WebService,供.net程序调用。 运行环境是TOMCAT 7,JDK 1.6。 将War包复制到Tomcat安装目录下的webapps目录,然后启动Tomcat...

    java开发常见漏洞及处理说明

    java web程序常见高危安全漏洞(如:SQL注入 、 XSS跨站脚本攻击、文件上传)的过滤和拦截处理,确保系统能够安全的运行

    Java毕业设计-基于Java的两个通用安全模块的设计与实现(源代码+论文).rar

    通过内置的安全过滤器和服务器端验证机制,可以有效拦截恶意请求,保护Web应用免受网络攻击的侵害。同时,模块还支持HTTPS协议和SSL/TLS加密,为网络通信提供了更加安全的通道。 本资源不仅提供了详细的源代码和...

    JSP安全开发之XSS漏洞详解

    XSS又叫CSS (Cross Site Script) ,跨...它指的是恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。

    基于Springboot+ Shiro+mybatis+Thymeleaf+Bootstra的Java后台管理系统脚手架.zip

    12.安全性高,完善的XSS预防和脚本过滤,彻底杜绝XSS攻击。 13.兼容Chrome,Firefox,360,IE8 +等浏览器。 14.三款皮肤外观,三种主题设置,页面体验随心选择。拿来学习做毕毕设也适合初中级以上JAVA开发人员采取...

    lucy-xss-filter

    XssFilter 基于Java的库,支持设置白名单以保护Web应用程序的方法。 如果将过滤器与白名单方法一起使用,它将为XSS攻击的网站提供比使用黑名单方法的现有过滤器更严格的安全措施。 同时支持DOM和SAX解析器。...

    Java安全知识点总结

    通过使用合适的输入验证和过滤机制,可以防止常见的安全漏洞,如跨站脚本攻击(XSS)和SQL注入。 身份认证和授权:Java应用程序的身份认证和授权机制是确保只有经过验证和授权的用户能够访问受限资源的关键。常见的...

    java_https_ssl

    从互联网诞生阶段开始,Web服务就是...当服务器把用户输人没有进行严格的HTML标签过滤就保存到数据库,并直接回显时,就会造成持久型的XSS攻击。这种攻击可能导致客户端被重定向到恶意网站,被植入木马或者被钓鱼。

    Java博客系统Zblog2.zip

    Zblog是一个java实现的开源博客系统。 核心功能 文章/页面发布、分类、统计阅读次数。 提供文章形式的RSS聚合。 提供链接的添加、归类功能。 附件上传添加管理功能。 评论的管理,垃圾信息过滤功能。...

    snuck:XSS自动过滤器旁路

    XSS自动过滤器旁路 概述 snuck是一种自动工具,其目的是通过基于反射上下文专门进行注入,从而显着测试给定的XSS滤波器。 这种方法采用Selenium来驱动Web浏览器,以重现攻击者和受害者的行为。 了解有关偷窃的信息 ...

Global site tag (gtag.js) - Google Analytics