反射型xss解决方法,增加过滤器,防止反射型 XSS攻击漏洞

反射型xss解决方法,增加过滤器,防止反射型 XSS攻击漏洞web.xml配置<filter> <filter-name>XSSFilter</filter-name> <filter-class>com.xxx.filter.NewXssFilter</filter-class> </filter> <filter-mapping> <filter-name>XSSFilter</filter-name> <url

大家好,又见面了,我是你们的朋友全栈君。

web.xml配置

    <filter>
		<filter-name>XSSFilter</filter-name>
		<filter-class>com.xxx.filter.NewXssFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>XSSFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>XSSFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>

添加XSS过滤器,NewXssFilter.java

package com.xxx.filter;

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 javax.servlet.http.HttpServletResponse;

import com.picc.platform.common.utils.NewXssHttpServletRequestWrapper;

public class NewXssFilter implements Filter {  
    FilterConfig filterConfig = null;  
    public void destroy() {  
       this.filterConfig = null;  
   }  
  
  public void doFilter(ServletRequest request, ServletResponse response,  
           FilterChain chain) throws IOException, ServletException {  
	  NewXssHttpServletRequestWrapper NewXssrequest = new  NewXssHttpServletRequestWrapper((HttpServletRequest)request);
	 HttpServletResponse NewXssresponse = (HttpServletResponse)response;
	 chain.doFilter(NewXssrequest, NewXssresponse);
   }  
  
   public void init(FilterConfig filterConfig) throws ServletException {  
       this.filterConfig = filterConfig;  
   }
 
}

NewXssHttpServletRequestWrapper.java

package com.xxx.common.utils;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

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

import org.apache.commons.lang3.StringEscapeUtils;

public class NewXssHttpServletRequestWrapper extends HttpServletRequestWrapper {

	
	HttpServletRequest orgRequest = null;

	public NewXssHttpServletRequestWrapper(HttpServletRequest request) {
		super(request);
		// TODO Auto-generated constructor stub
		orgRequest = request;
	}

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

	public String getHeader(String name) {

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

	public Map<String, String[]> getParameterMap() {
		Map<String, String[]> paramMap = super.getParameterMap();
		Set<String> keySet = paramMap.keySet();
		for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {
			String key = (String) iterator.next();
			String[] str = paramMap.get(key);
			for (int i = 0; i < str.length; i++) {
				str[i] = xssEncode(str[i]);
			}
		}
		return paramMap;
	}
	

	private static String xssEncode(String s) {

		if (s == null || s.isEmpty()) {
			return s;
		}
		return StringEscapeUtils.escapeHtml4(s);

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

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

		return req;
	}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139826.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vim学习六之搜索命令「建议收藏」

    vim学习六之搜索命令「建议收藏」目录Vim基本搜索命令/或者?搜索n/N正反向下一个特殊搜索Vim高亮搜索搜索大小写敏感搜索进阶Vim正则表达式搜索查找在行首的特定串查找在行尾的特定串匹配特定行Vim基本搜索命令/或者?搜索在Vim普通模式下,输入/或?符号就进入了搜索模式,/用于正向往下搜索,?用于反向往上搜索。n/N正反向下一个在搜索模式下可以对Vim打开的整个文本内容进行搜索,当按下n时可以继续正向查找下一个相匹配的目前单词。N的作用与n相反,是往上反向搜索目标单词。特殊搜索在Vim命

  • JAVA卸载与安装(Linux)

    JAVA卸载与安装(Linux)检查JAVA版本java-version检查路径whichjava删除整个路径rm-rf路径检查java是否还存在vi命令编辑文件profilevi/etc/profile(未做,没有配置环境变量)安装:上传所需的JAVA安装包在所需位置创建目录(这里是/…

  • springmvc 适配器详解[通俗易懂]

    springmvc 适配器详解[通俗易懂]大家知道springmvc是一个非常优良的框架,配置灵活实现简单,只需我们更多的关注我们的业务逻辑。今天我们就通过一个简单的例子模拟适配生成过程。处理器适配器HandlerAdapter1、SimpleControllerHandlerAdapter表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作

  • VS2015序列号_autocad2008激活序列号

    VS2015序列号_autocad2008激活序列号
    VisualStudioTeamSystem2008TeamSuite(vs2008)正式中文版   
    VS2008简体中文正式版序列号大全
      
    1.VisualStudio2008ProfessionalEdition:
    XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT
      
    2.VisualStudio2008TeamTestLoadAgent:
    WPX3J-BXC3W-BPYW

  • 常见计算机病毒种类及特征介绍与分析

    常见计算机病毒种类及特征介绍与分析什么是计算机病毒通俗来讲,计算机病毒是一个程序,一段可执行代码。它可以很快地通过网络、U盘等蔓延,又常常难以根除。它能影响计算机使用,并且具有破坏性,复制性和传染性。病毒又分为很多种类,下面,我就来说说最常见的一些病毒吧!系统病毒系统病毒的前缀为:Win32、PE、Win95、W32、W95等。这些病毒的一般共有的特性是可以感染windows操作系统的*.exe和*.dll

  • 导航和渲染首页文章列表

    导航和渲染首页文章列表

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号