`
knight_black_bob
  • 浏览: 833678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解决xss漏洞

阅读更多

 web.xml

<filter>
		<filter-name>xssFilter</filter-name>
		<filter-class>com.aoi.selfhelp.filters.XSSFilter</filter-class>
	</filter>

	<!-- 解决xss漏洞 -->
	<filter-mapping>
		<filter-name>xssFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 

 

 

package com.aoi.selfhelp.filters;
import java.io.IOException;

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 com.cmcc.aoi.selfhelp.util.XssHttpServletRequestWrapper;
  
public class XSSFilter implements Filter {  
  
    @Override  
    public void init(FilterConfig filterConfig) throws ServletException {  
    }  
  
    @Override  
    public void doFilter(ServletRequest request, ServletResponse response,  
            FilterChain chain) throws IOException, ServletException {  
  
        XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper(  
                (HttpServletRequest) request);  
        chain.doFilter(xssRequest, response);  
    }  
  
    @Override  
    public void destroy() {  
    }  
  
}  

 

 

 

 

package com.aoi.selfhelp.util;

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

public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
{
	HttpServletRequest orgRequest = null;

	public XssHttpServletRequestWrapper(HttpServletRequest request)
	{
		super(request);
		orgRequest = request;
	}

	@Override
	public String[] getParameterValues(String name)
	{
		String[] parameterValues = super.getParameterValues(name);
		if (parameterValues == null)
			parameterValues = new String[] {};
		for (int i = 0; i < parameterValues.length; i++)
		{
			String value = parameterValues[i];
			if (value != null)
			{
				parameterValues[i] = xssEncode(value);
			}
		}
		return parameterValues;
	}

	/**
	 * 覆盖getParameter方法,将参数名和参数值都做xss过滤。<br/>
	 * 如果需要获得原始的值,则通过super.getParameterValues(name)来获取<br/>
	 * getParameterNames,getParameterValues和getParameterMap也可能需要覆盖
	 */
	@Override
	public String getParameter(String name)
	{
		String value = super.getParameter(xssEncode(name));
		if (value != null)
		{
			value = xssEncode(value);
		}
		return value;
	}

	/**
	 * 覆盖getHeader方法,将参数名和参数值都做xss过滤。<br/>
	 * 如果需要获得原始的值,则通过super.getHeaders(name)来获取<br/>
	 * getHeaderNames 也可能需要覆盖
	 */
	@Override
	public String getHeader(String name)
	{

		String value = super.getHeader(xssEncode(name));
		if (value != null)
		{
			value = xssEncode(value);
		}
		return value;
	}

	/**
	 * 将容易引起xss漏洞的半角字符直接替换成全角字符
	 * 
	 * @param s
	 * @return
	 */
	private static String xssEncode(String s)
	{
		if (s == null || s.isEmpty())
		{
			return s;
		}
		StringBuilder sb = new StringBuilder(s.length() + 16);
		for (int i = 0; i < s.length(); i++)
		{
			char c = s.charAt(i);
			switch (c)
			{
				case '>':
					sb.append(">");// 转义大于号
					break;
				case '<':
					sb.append("<");// 转义小于号
					break;
				case '\'':
					sb.append("'");// 转义单引号
					break;
				case '\"':
					sb.append(""");// 转义双引号
					break;
				// case '&':
				//	sb.append("&");// 转义&
				//	break;
				default:
					sb.append(c);
					break;
			}
		}
		return sb.toString();
	}

	/**
	 * 获取最原始的request
	 * 
	 * @return
	 */
	public HttpServletRequest getOrgRequest()
	{
		return orgRequest;
	}

	/**
	 * 获取最原始的request的静态方法
	 * 
	 * @return
	 */
	public static HttpServletRequest getOrgRequest(HttpServletRequest req)
	{
		if (req instanceof XssHttpServletRequestWrapper)
		{
			return ((XssHttpServletRequestWrapper) req).getOrgRequest();
		}

		return req;
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

0
2
分享到:
评论
2 楼 knight_black_bob 2015-12-29  
直接使用xss.js就可以
MrLee23 写道
为什么如此费劲????
直接使用xss.js就可以了

谢谢 ,我查查。。。。
1 楼 MrLee23 2015-12-29  
为什么如此费劲????
直接使用xss.js就可以了

相关推荐

    百度编辑器解决xss漏洞

    百度编辑器解决xss漏洞

    360webscan解决xss漏洞

    文件"360safe"可能是360提供的安全报告或修复工具,使用它可以帮助我们更有效地识别和解决XSS漏洞。具体使用方法需要根据文件的实际情况来确定,通常这类工具会提供详细的指南和步骤。 总的来说,解决360 webscan...

    前端顽疾--XSS漏洞分析与解决.ppt

    前端顽疾--XSS 漏洞分析与解决 一、前端顽疾--XSS 漏洞分析 XSS 漏洞是一种常见的前端安全问题,指的是攻击者在 Web 应用程序中注入恶意脚本,以欺骗用户或窃取用户信息。XSS 漏洞的危害非常高,黑客可以通过 XSS ...

    基于python的XSS漏洞检测插件的设计与实现.docx

    为了快速解决XSS漏洞导致的用户信息泄露的问题,本文设计了一种基于Python的XSS漏洞检测插件,通过研究跨站点脚本的基本原理和相关知识,对客户端进行安全且全面分析,并设计了一个XSS漏洞检测模型来完成XSS漏洞相关...

    XSS漏洞解决方案实例

    跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类...

    javaweb配置xssproject,完美解决安全检测报XSS漏洞

    2. **Multipart/form-data请求处理**:在描述中提到,XSSProject还解决了multipart/form-data类型的Request请求的XSS过滤问题。这意味着它能够处理文件上传、表单提交等涉及复杂数据格式的场景,确保这些数据在存储...

    奇安信安全扫描漏洞解决路径遍历和存储型xss和反射xss攻击漏洞

    亲测可用,中级漏洞,解决服务器段请求伪造 final String forURL = ESAPI.encoder().encodeForURL(url); restTemplate.exchange(forURL, HttpMethod.GET,new HttpEntity&lt;String&gt;(headers), List.class, params);

    XSS漏洞和sql注入解决方案

    XSS漏洞和sql注入解决方案 傻瓜试文档,拷贝就可以了,通用版本

    DOM-XSS漏洞的挖掘与攻击面延伸.pptx

    5. DOM-XSS 漏洞的解决方案: * 使用安全的编码方式来防御 XSS 攻击。 * 对用户输入进行校验,从而避免恶意脚本的 inject。 * 使用 WAF 来防御 XSS 攻击。 DOM-XSS 漏洞是一种常见的安全漏洞,攻击者可以 inject...

    springboot整合XSS

    Spring Security是Spring Boot推荐的安全管理框架,它提供了一套完整的安全解决方案,包括XSS防护。首先,我们需要在Spring Boot项目中引入Spring Security依赖: ```xml &lt;groupId&gt;org.springframework.boot ...

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

    PDF文件XSS攻击问题主要指的是攻击者通过构造恶意的PDF文档,利用其中的脚本语言功能,尝试在用户的浏览器上执行跨站脚本攻击(XSS)。这种攻击方式可能导致敏感信息泄露、用户权限滥用或其他安全风险。在SpringBoot...

    XSS跨站脚本攻击漏洞修复方法

    ### XSS漏洞修复策略 1. **输入验证与过滤**: 对所有用户提交的数据进行严格的检查,限制特定字符或字符集,避免危险脚本的输入。 2. **输出编码**: 在将用户输入的数据展示在页面上时,应使用适当的编码方式...

    XSS_Rays.zip_XSS Rays 下载_tool_xss扫描_xss扫描器_漏洞扫描

    最近The Spanner发布了一个名为XSS Rays的 XSS漏洞扫描器。这tool有点意思,是使用JS写的,JS遍历目标的link、form,然后构造测试用例去测试,可以发现DOM的XSS(当然是在测试用例打对了的情况下)。它的调用方式也...

    htmlcleaner-2.22_html_XSS_

    在标题"htmlcleaner-2.22_html_XSS_"中,"htmlcleaner"是工具的名字,"2.22"是版本号,"html"代表它处理的是HTML内容,而"XSS"则表明该工具专注于解决XSS漏洞。这个版本的HTMLCleaner专注于防止XSS攻击,通过清理和...

    JSP使用过滤器防止Xss漏洞

    在Web开发中,XSS(Cross-site scripting)漏洞是一种常见的安全威胁,允许攻击者通过注入恶意脚本到网页中,从而影响用户浏览器的行为。JSP(JavaServer Pages)作为常用的服务器端动态网页技术,同样需要关注XSS...

    xss解决方案.zip

    综上所述,此解决方案通过包装请求、过滤器和工具类的组合,构建了一个防御XSS攻击的系统。它强调了在处理用户输入时的安全意识,并提供了一套标准化的防御策略。在部署和维护web应用程序时,理解和应用这样的安全...

    asp.net 防注入的 HttpHandler

    asp.net 防注入的 HttpHandler asp.net 防注入的 HttpHandler

    E077-PHP应用安全-针对存储型XSS漏洞的安全开发.pdf

    【PHP应用安全与存储型XSS漏洞防御】 存储型跨站脚本(Stored XSS)漏洞是一种常见的Web应用程序安全问题,它允许攻击者通过在应用程序的数据库或其他持久化存储中注入恶意脚本,来影响所有访问包含这些脚本的页面...

    DOM-XSS漏洞的挖掘与攻击面延伸.pdf

    DOM-XSS漏洞的挖掘与攻击面延伸.pdf

    2022年全新UI聚合支付系统四方源码4月最新更新安全升级修复XSS漏洞和补单漏洞新增诸多实用功能完美版.zip

    【标题】中的“2022年全新UI聚合支付系统四方源码4月最新更新安全升级修复XSS漏洞和补单漏洞新增诸多实用功能完美版”揭示了几个关键的IT知识点: 1. **UI更新**:UI(User Interface)是指用户界面,这里的“全新...

Global site tag (gtag.js) - Google Analytics