`
__SuRa丶Rain
  • 浏览: 45094 次
  • 性别: 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注入过滤器.zip"就是针对这两种威胁提供的一种解决方案,基于流行的Spring Boot 2.0框架进行开发。 XSS 攻击是通过在网页中插入恶意脚本,当其他用户访问该页面时,这些脚本会被执行,从而...

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

    Java防止XSS攻击的核心策略是确保用户输入的数据在显示到网页上之前被适当地编码、转义或过滤,以防止恶意脚本被执行。XSS(跨站脚本)攻击是由于网页应用程序未能正确处理用户输入的数据,使得攻击者能够注入恶意...

    javaxss必备jar包及过滤器代码

    总结来说,"javaxss必备jar包及过滤器代码"涉及到的是在Java Web应用程序中防止XSS攻击的关键技术。通过使用像`xssProtect-0.1.jar`这样的库,配合自定义的过滤器代码,我们可以有效地减少XSS攻击的风险,保护用户的...

    xss特殊字符拦截与过滤

    在Web开发中,这样的防护措施非常重要,因为它能够过滤掉用户输入中的危险代码,降低XSS攻击的风险。通常这类防护措施会在Web框架层面或者中间件层面提供,用户只需要简单配置即可实现防护,但开发者也可以根据需要...

    MLDN Java Web 开发实战经典源码李兴华源代码

    5. **过滤器与监听器**:Filter和Listener是Java Web中的两大组件,过滤器用于拦截和处理请求,实现如权限控制、GZIP压缩等功能;监听器则监控Web应用中的特定事件,如session创建、销毁等。 6. **Ajax与JavaScript...

    java过滤器,防止XSS、SQL

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

    Java Web XSS安全防御

    **Java Web XSS安全防御** XSS(Cross Site Scripting)攻击是网络安全中常见的威胁之一,尤其是在Java Web开发中。这种攻击允许黑客通过注入恶意脚本到网页中,从而窃取用户的敏感信息,如Cookie、Session等。为了...

    JAVA Web中过滤器

    从Java Servlet 3.0版本开始,我们还可以使用注解的方式来配置过滤器,无需在web.xml中手动配置,使得代码更加简洁。 通过了解和熟练运用JAVA Web中的过滤器,开发者可以更高效地管理和控制Web应用的输入和输出,...

    java 预防XSS攻击

    XSS攻击通常发生在Web应用程序未能充分验证或过滤用户输入的情况下,使得恶意代码能够被嵌入到网页中,进而影响用户的安全。本文将深入探讨如何在Java后端进行预防XSS攻击的策略。 1. **理解XSS类型**: - **存储...

    Java过滤器,字符过滤,标签过滤

    总结来说,这个Java过滤器小样例提供了字符过滤和标签过滤的实现,有助于提升Web应用的安全性和数据一致性。通过研究这个项目,开发者可以学习到如何在实际项目中应用过滤器,以及处理字符编码问题,这对于任何涉及...

    Java Web开发详解随书源代码下载

    这是每个Java Web应用的核心配置文件,用于定义Servlet、过滤器、监听器等组件的配置信息。通过正确配置,我们可以控制应用程序的行为和生命周期。 在Java Web开发中,Model-View-Controller(MVC)设计模式是非常...

    Java Web编程宝典源代码

    9. **Web安全**:包括认证、授权、防止SQL注入、XSS攻击等,是Java Web开发不可忽视的部分。书中可能涉及如何使用过滤器、安全性API等手段确保应用安全。 10. **部署与服务器配置**:Tomcat、Jetty等应用服务器的...

    防止XSS攻击解决办法

    在Java Web应用中,可以使用过滤器(Filter)来拦截并处理请求,过滤掉可能的XSS攻击。以下是两种常用的过滤器: 1. OWASP Java Encoder库:这是一个开源项目,提供了针对不同场景的编码函数,可以将用户输入转义为...

    Java Web应用开发项目教程(附电子教案,程序源代码,习题答案)

    《Java Web应用开发项目教程》是一本以实践为导向的教程,旨在帮助读者深入理解并掌握Java Web开发技术。教程通过完整的案例,采用模块化的教学方式,将复杂的Web应用开发过程分解为可操作的步骤,逐步引导学习者...

    JAVA WEB 选课系统源代码

    【JAVA WEB 选课系统源代码】是一个典型的Java Web应用程序示例,对于初学者和有经验的开发者来说,都是一个宝贵的资源。这个项目的核心是利用Java语言和Web技术来构建一个能够实现学生选课功能的系统。下面我们将...

    关于pdf文件xss攻击问题,配置xssFilter方法

    5. 测试验证:确保配置生效后,进行充分的测试,包括正常输入和恶意输入,检查是否能正确过滤XSS攻击。 除了使用XSSFilter,还可以结合其他策略来增强安全性,如: - 使用HTTP头部的`Content-Security-Policy`,...

    Java Web整合开发实战 随盘源代码1-9章

    《Java Web整合开发实战》随盘源代码涵盖了1-9章的内容,这是一份非常珍贵的学习资源,适合那些想要深入理解和实践Java Web开发的程序员。这份资料可能由于大小限制被分成了两个压缩包,读者需要在相关的上传资源中...

    JAVA防止XSS注入,附jar包

    XSS攻击通常发生在Web应用中,当用户输入的数据未经适当验证和转义就被直接显示在其他用户浏览器上时,攻击者可以通过注入恶意JavaScript代码来执行攻击。攻击方式有反射型、存储型和DOM型三种,每种都有其特定的...

    java防止xss注入

    Java作为广泛应用于Web开发的语言,如何有效防止XSS注入是开发者必须关注的问题。 一、XSS攻击类型 1. **存储型XSS**:攻击者将恶意脚本存储在服务器上,如评论区、论坛等用户可以输入内容的地方。当其他用户访问...

    java Web课件完整版

    8. **Filter和Listener**:在Java Web中,过滤器(Filter)可以拦截请求和响应,监听器(Listener)可以监听特定的事件,如session的创建和销毁。 9. **Ajax**:异步JavaScript和XML,允许部分页面更新,提高用户...

Global site tag (gtag.js) - Google Analytics