<!--@分隔 --> <filter> <filter-name>xssFilter</filter-name> <filter-class>com.yoro.core.web.XssFilter</filter-class> <init-param> <param-name>SplitChar</param-name> <param-value>@</param-value> </init-param> <init-param> <param-name>FilterChar</param-name> <param-value>>@<@\'@\"@\\@#@(@)</param-value> </init-param> <init-param> <param-name>ReplaceChar</param-name> <param-value>>'@<@‘@“@\@#@(@)</param-value> </init-param> </filter> <filter-mapping> <filter-name>xssFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
package com.yoro.core.web; /** * @author zoro */ 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; public class XssFilter implements Filter { private String filterChar; private String replaceChar; private String splitChar; FilterConfig filterConfig = null; public void init(FilterConfig filterConfig) throws ServletException { this.filterChar=filterConfig.getInitParameter("FilterChar"); this.replaceChar=filterConfig.getInitParameter("ReplaceChar"); this.splitChar=filterConfig.getInitParameter("SplitChar"); this.filterConfig = filterConfig; } public void destroy() { this.filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request,filterChar,replaceChar,splitChar), response); } }
package com.yoro.core.web; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; /** * @author zoro */ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { private String[]filterChars; private String[]replaceChars; public XssHttpServletRequestWrapper(HttpServletRequest request,String filterChar,String replaceChar,String splitChar) { super(request); if(filterChar!=null&&filterChar.length()>0){ filterChars=filterChar.split(splitChar); } if(replaceChar!=null&&replaceChar.length()>0){ replaceChars=replaceChar.split(splitChar); } } public String getQueryString() { String value = super.getQueryString(); if (value != null) { value = xssEncode(value); } return value; } /** * 覆盖getParameter方法,将参数名和参数值都做xss过滤。<br/> * 如果需要获得原始的值,则通过super.getParameterValues(name)来获取<br/> * getParameterNames,getParameterValues和getParameterMap也可能需要覆盖 */ public String getParameter(String name) { String value = super.getParameter(xssEncode(name)); if (value != null) { value = xssEncode(value); } return value; } public String[] getParameterValues(String name) { String[]parameters=super.getParameterValues(name); if (parameters==null||parameters.length == 0) { return null; } for (int i = 0; i < parameters.length; i++) { parameters[i] = xssEncode(parameters[i]); } return parameters; } /** * 覆盖getHeader方法,将参数名和参数值都做xss过滤。<br/> * 如果需要获得原始的值,则通过super.getHeaders(name)来获取<br/> getHeaderNames 也可能需要覆盖 */ public String getHeader(String name) { String value = super.getHeader(xssEncode(name)); if (value != null) { value = xssEncode(value); } return value; } /** * 将容易引起xss漏洞的半角字符直接替换成全角字符 * * @param s * @return */ private String xssEncode(String s) { if (s == null || s.equals("")) { return s; } try { s = URLDecoder.decode(s, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } for (int i = 0; i < filterChars.length; i++) { if(s.contains(filterChars[i])){ s=s.replace(filterChars[i], replaceChars[i]); } } return s; } }
相关推荐
首先说一下思路,防止这种类似于注入攻击,就是使用拦截器(Filter)处理特殊字符或过滤特殊字符 今天介绍一个方法,利用覆盖Servlet的getParameter方法达到处理特殊字符的目的来解决(防止)Xss攻击 web.xml,需要的...
攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是...
主要使用Filter针对Xss攻击,sql注入,服务器访问白名单,以及csrf进行安全校验 1,主要实现的是三大块功能:Xss攻击,sql注入,服务器白名单,以及csrf 2,此Filter为真实项目部署,在XssHttpServletRequestWrapper...
java web 过滤器防止Xss、sql注入,基于spring boot 2.0框架开发。
java过滤器,XSS : 跨站脚本攻击(Cross Site Scripting),SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
Lucy-XSS:XssFilter,XssPreventer Lucy-XSS是一个包含两个防御模块的开源库,用于保护Web应用程序免受XSS攻击。 它支持基于白名单规则的安全策略。 当前的默认规则是Naver的标准。 您可以根据需要更改默认规则。...
在.net环境里,一直没有好的Xss跨站脚本攻击过滤工具,于是将Java下的AntiSamy封装成了WebService,供.net程序调用。 运行环境是TOMCAT 7,JDK 1.6。 将War包复制到Tomcat安装目录下的webapps目录,然后启动Tomcat...
该Web应用程序还可以防止SQL注入和跨站点脚本攻击。 使用的技术 前端: HTML,CSS,JavaScript,Jquery,Bootstrap,Java服务器页面(JSP),AJAX(用于Flight Search窗口小部件) 后端: Java Servlet,Java模型...
阿里云java短信验证码源码 义码当仙之互联网安全架构 常见Web安全漏洞 XSS攻击 什么是XSS攻击手段 ...@WebFilter(filterName = "xssFilter", urlPatterns = "/*") public class XssFilter implements Filter {
14.xss过滤的StringEscapeUtils过滤器实现 public class AttackHandler extends Handler { @Override public void handle(String target, HttpServletRequest request, HttpServletResponse ...
5.1 Hello Web安全Java配置 29 5.1.1 AbstractSecurityWebApplicationInitializer 31 5.1.2 AbstractSecurityWebApplicationInitializer不存在Spring 31 5.1.3使用Spring MVC的...
如:在使用Java中得SSH框架时,我们需要在web.xml文件中配置编码的filter,具体代码是: <span xss=removed><!-- 表单处理乱码,必须在OpenSessionInViewFilter的filter之前 --> <filter> <filter>Character...
Filter首先在DispatcherServlet的前面运行,而Interceptor在DispatcherServlet和Controllr(Handler)之间运行。 筛选 Web应用程序上下文功能 使用Spring函数困难 通常,实现编码,CORS,XSS,LOG,证书,授权等。 ...
支持Java 7+。 换句话说,它是一个API,可以帮助您确保客户端不会在其提供给个人资料,注释等HTML中提供恶意的货物代码,这些代码会持久保存在服务器上。 关于Web应用程序的术语“恶意代码”通常表示“ JavaScript...