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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
百度编辑器解决xss漏洞
文件"360safe"可能是360提供的安全报告或修复工具,使用它可以帮助我们更有效地识别和解决XSS漏洞。具体使用方法需要根据文件的实际情况来确定,通常这类工具会提供详细的指南和步骤。 总的来说,解决360 webscan...
前端顽疾--XSS 漏洞分析与解决 一、前端顽疾--XSS 漏洞分析 XSS 漏洞是一种常见的前端安全问题,指的是攻击者在 Web 应用程序中注入恶意脚本,以欺骗用户或窃取用户信息。XSS 漏洞的危害非常高,黑客可以通过 XSS ...
为了快速解决XSS漏洞导致的用户信息泄露的问题,本文设计了一种基于Python的XSS漏洞检测插件,通过研究跨站点脚本的基本原理和相关知识,对客户端进行安全且全面分析,并设计了一个XSS漏洞检测模型来完成XSS漏洞相关...
跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类...
2. **Multipart/form-data请求处理**:在描述中提到,XSSProject还解决了multipart/form-data类型的Request请求的XSS过滤问题。这意味着它能够处理文件上传、表单提交等涉及复杂数据格式的场景,确保这些数据在存储...
XSS(Cross-site scripting)是一..."shiyaner"这个文件可能是包含了一些实验或示例代码,用于演示XSS漏洞的攻击方式以及如何防护。通过学习这些源代码,开发者可以更好地理解和实践XSS防护策略,提高Web应用的安全性。
亲测可用,中级漏洞,解决服务器段请求伪造 final String forURL = ESAPI.encoder().encodeForURL(url); restTemplate.exchange(forURL, HttpMethod.GET,new HttpEntity<String>(headers), List.class, params);
XSS漏洞和sql注入解决方案 傻瓜试文档,拷贝就可以了,通用版本
5. DOM-XSS 漏洞的解决方案: * 使用安全的编码方式来防御 XSS 攻击。 * 对用户输入进行校验,从而避免恶意脚本的 inject。 * 使用 WAF 来防御 XSS 攻击。 DOM-XSS 漏洞是一种常见的安全漏洞,攻击者可以 inject...
Spring Security是Spring Boot推荐的安全管理框架,它提供了一套完整的安全解决方案,包括XSS防护。首先,我们需要在Spring Boot项目中引入Spring Security依赖: ```xml <groupId>org.springframework.boot ...
7. **代码审查**:定期进行代码审查,检查可能的XSS漏洞,并确保所有用户输入都经过了适当的安全处理。 8. **安全编码最佳实践**:遵循安全编码原则,例如,避免在HTML中动态生成JavaScript,而是将其放在外部文件...
PDF文件XSS攻击问题主要指的是攻击者通过构造恶意的PDF文档,利用其中的脚本语言功能,尝试在用户的浏览器上执行跨站脚本攻击(XSS)。这种攻击方式可能导致敏感信息泄露、用户权限滥用或其他安全风险。在SpringBoot...
### XSS漏洞修复策略 1. **输入验证与过滤**: 对所有用户提交的数据进行严格的检查,限制特定字符或字符集,避免危险脚本的输入。 2. **输出编码**: 在将用户输入的数据展示在页面上时,应使用适当的编码方式...
最近The Spanner发布了一个名为XSS Rays的 XSS漏洞扫描器。这tool有点意思,是使用JS写的,JS遍历目标的link、form,然后构造测试用例去测试,可以发现DOM的XSS(当然是在测试用例打对了的情况下)。它的调用方式也...
在标题"htmlcleaner-2.22_html_XSS_"中,"htmlcleaner"是工具的名字,"2.22"是版本号,"html"代表它处理的是HTML内容,而"XSS"则表明该工具专注于解决XSS漏洞。这个版本的HTMLCleaner专注于防止XSS攻击,通过清理和...
综上所述,此解决方案通过包装请求、过滤器和工具类的组合,构建了一个防御XSS攻击的系统。它强调了在处理用户输入时的安全意识,并提供了一套标准化的防御策略。在部署和维护web应用程序时,理解和应用这样的安全...
在Web开发中,XSS(Cross-site scripting)漏洞是一种常见的安全威胁,允许攻击者通过注入恶意脚本到网页中,从而影响用户浏览器的行为。JSP(JavaServer Pages)作为常用的服务器端动态网页技术,同样需要关注XSS...
asp.net 防注入的 HttpHandler asp.net 防注入的 HttpHandler