`

项目中防御xss攻击

 
阅读更多
###1.什么是XSS攻击
XSS攻击全称是跨站脚本攻击,是经常出现在web应用中的安全漏洞,它允许恶意web用户将代码植入到页面中,比如:sql脚本,srcipt脚本,或者html代码。
黑客界共识是:跨站脚本攻击是新型的缓冲区溢出攻击。
例如:在页面输入一个转账的sql或者js脚本,然后发给后台,后台接收浏览器参数,没有任何校验,接着执行了该脚本,造成数据被篡改。
###2.如何防御XSS攻击
我的项目是springboot项目,要防御XSS攻击只需要增加一个filter,然后在filter中包装http请求。
Talk is cheap,show me the code!
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * Created by shaomaolin on 2018/9/6.
 */
@WebFilter(urlPatterns = "/*", filterName = "XssFilter")
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 {
        HttpServletResponse servletResponse = (HttpServletResponse)response;
        servletResponse.setHeader("Set-Cookie", "name=value; HttpOnly");
        chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request), servletResponse);
    }

    @Override
    public void destroy() {

    }
}

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.util.HtmlUtils;
import org.springframework.web.util.JavaScriptUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
 * Created by shaomaolin on 2018/9/6.
 */
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper{
    public XssHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
    }

    public String[] getParameterValues(String parameter) {
        String[] values = super.getParameterValues(parameter);
        if (values == null)
            return null;

        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i < count; i++) {
            encodedValues[i] = cleanXSS(values[i]);
        }

        return encodedValues;
    }

    public String getParameter(String parameter) {
        String value = super.getParameter(parameter);
        if (StringUtils.isBlank(value))
            return null;
        return cleanXSS(value);
    }
    private String cleanXSS(String value) {
        if (StringUtils.isNotBlank(value)) {
            value = HtmlUtils.htmlEscape(value);
            value = JavaScriptUtils.javaScriptEscape(value);
            value = StringEscapeUtils.escapeSql(value);
        }
        return value;
    }
}
 
分享到:
评论

相关推荐

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

    保持对最新的安全实践和框架更新的了解,定期对开发团队进行安全编码培训,提高他们对XSS攻击的认识和防御能力。 总之,Java防止XSS攻击需要综合运用多种技术,包括过滤、转义、验证和使用安全的编程实践。开发...

    防止XSS攻击解决办法

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

    SpringBoot +esapi 实现防止xss攻击 实战代码,满满干货

    通过这些实践,你可以构建一个更加安全的Web应用,有效地防御XSS攻击。在实际开发中,还应关注其他安全方面,比如SQL注入、CSRF攻击等,同时遵循OWASP(开放网络应用安全项目)的最佳实践,以提升应用的整体安全性。

    spring boot xss防御

    本项目"spring boot xss防御"旨在介绍如何在Spring Boot环境中有效地防止XSS攻击。以下是关于这个主题的详细知识点: 1. XSS攻击类型: - 存储型XSS:攻击者的脚本被存储在服务器端,并在后续请求时传递给其他用户...

    防止XSS攻击xssProtect用到的jar包

    为了防御XSS攻击,开发者通常会采用各种策略和工具,其中就包括"XssProtect"这样的库。这个主题中提到的三个jar包——antlr-3.0.1.jar、antlr-runtime-3.0.1.jar和xssProtect-0.1.jar,都是与防止XSS攻击相关的组件...

    xss跨站脚本攻击与预防

    综上所述,了解XSS攻击的原理、危害以及防御措施对于构建安全的Web应用至关重要。通过阅读《XSS跨站脚本攻击剖析与防御(完整版).pdf》,我们可以深入学习这方面的知识,并结合实际项目中的`xss-html-filter`工具来...

    Spring-MVC处理XSS、SQL注入攻击的方法总结

    例如,可以使用 `StringEscapeUtils.escapeSql()` 方法来转义 SQL 注入攻击中的危险字符,使用 `StringEscapeUtils.escapeHtml()` 或 `StringEscapeUtils.escapeJavaScript()` 来转义可能引发 XSS 攻击的字符。...

    XSS跨站脚本gj剖析与防御(完整版) pdf

    防御XSS攻击的方法主要包括输入验证、输出编码、使用HTTP头部防护策略(如Content-Security-Policy)以及采用安全的编程实践。输入验证是阻止恶意输入的第一道防线,可以限制用户输入的数据类型和格式。输出编码是将...

    XSS攻击检测

    在给定的描述中,提到的是一个XSS攻击检测的代码项目,可能是用于检测和防御XSS攻击的工具。开发时使用的环境是MyEclipse,对于使用其他开发工具的开发者,需要注意可能需要进行相应的配置修改以适应项目。删除bin...

    php_XSS防攻击插件

    "php_XSS防攻击插件"便是这样一种工具,它专为PHP环境设计,旨在确保从HTML编辑器或文本域获取的JS传值不包含潜在的XSS攻击代码。 **HTMLPurifier库的介绍** 在提供的压缩包中,我们看到一个名为`htmlpurifier`的...

    XSS跨域攻击在web项目中的防范,基于antisamy技术

    antisamy技术是一种专门用于防御XSS攻击的库,由OWASP(开放网络应用安全项目)开发。它的主要目标是清理或过滤用户输入的数据,防止恶意脚本在浏览器中执行。antisamy通过提供一套详细的策略和规则,可以对HTML、...

    XSS跨域攻击讲义

    - **严重程度**:XSS攻击被OWASP(开放Web应用安全项目)列为十大安全漏洞之一,并且长期占据榜单前列位置。攻击者可以通过这种方式实现对用户会话的劫持,进而进行各种恶意行为。 - **示例**:2011年,中国知名...

    php处理xss攻击过滤.rar

    XSS攻击允许攻击者通过注入恶意脚本到网页中,从而获取用户的敏感信息,例如登录凭据或执行其他恶意操作。为了防御这种攻击,开发者需要对用户输入进行适当的过滤和转义。 标题“php处理xss攻击过滤.rar”表明,这...

    防止SQL注入和XSS攻击Filter

    - **实现细节**:具体来说,需要重写`getParameter`、`getParameterMap`、`getParameterNames`等方法,并在这些方法中添加相应的过滤逻辑,例如移除特殊字符、转义HTML标签等,以防止SQL注入或XSS攻击。 #### 四、...

    隐式马尔可夫算法识别XSS攻击.zip

    通过深入理解IMM和XSS攻击,我们可以创建一个有效的防御机制,保护Web应用程序免受此类攻击。这不仅需要对IMM算法有深入的认识,还要了解XSS攻击的常见技术和防范策略。对于机器学习初学者来说,这是一个很好的实战...

    springboot2.x使用Jsoup防XSS攻击的实现

    XSS攻击的基本原理是攻击者通过注入恶意脚本到网页中,当受害者访问这些被篡改的网页时,恶意脚本会在用户的浏览器上下文中执行。为了防范这类攻击,开发者需要对用户输入的数据进行严格的过滤和转义处理。 在...

    Java Web XSS安全防御

    为了保障Web应用程序的安全性,开发者必须采取有效的措施来防御XSS攻击。 首先,理解XSS的类型至关重要。XSS分为反射型XSS、存储型XSS和DOM型XSS。反射型XSS发生在用户点击含有恶意脚本的URL时,存储型XSS则是恶意...

    SpringBoot整合XSS.zip

    2. **防御XSS**:防御XSS攻击的主要手段是过滤、编码和验证输入。SpringBoot可以通过集成XssFilter来实现这一目标。XssFilter可以在每个HTTP请求处理之前对请求参数进行过滤,去除或转义潜在的恶意脚本。 **二、...

    springboot整合XSS

    在现代Web应用开发中,安全性是至关重要的一个环节。Spring Boot作为Java领域广泛使用的微服务...通过配置Spring Security,使用过滤器,以及配合其他安全库,我们可以显著增强Spring Boot应用对XSS攻击的防御能力。

Global site tag (gtag.js) - Google Analytics