`

java防御xss攻击

 
阅读更多
.
关于xss的概念和解决方案网上很多,可以参考这个:

http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html#xsshappen

这里说下最近项目中我们的解决方案,主要用到commons-lang3-3.1.jar这个包的org.apache.commons.lang3.StringEscapeUtils.escapeHtml4()这个方法。

解决过程主要在用户输入和显示输出两步:在输入时对特殊字符如<>" ' & 转义,在输出时用jstl的fn:excapeXml("fff")方法。

其中,输入时的过滤是用一个filter来实现,

实现过程:

在web.xml加一个filter

<filter>
        <filter-name>XssEscape</filter-name>
        <filter-class>cn.pconline.morden.filter.XssFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>XssEscape</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>



package cn.pconline.morden.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;

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 {
        chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request), response);
    }

    @Override
    public void destroy() {
    }
}



package cn.pconline.morden.filter;

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

import org.apache.commons.lang3.StringEscapeUtils;

public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {

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

    @Override
    public String getHeader(String name) {
        return StringEscapeUtils.escapeHtml4(super.getHeader(name));
    }

    @Override
    public String getQueryString() {
        return StringEscapeUtils.escapeHtml4(super.getQueryString());
    }

    @Override
    public String getParameter(String name) {
        return StringEscapeUtils.escapeHtml4(super.getParameter(name));
    }

    @Override
    public String[] getParameterValues(String name) {
        String[] values = super.getParameterValues(name);
        if(values != null) {
            int length = values.length;
            String[] escapseValues = new String[length];
            for(int i = 0; i < length; i++){
                escapseValues[i] = StringEscapeUtils.escapeHtml4(values[i]);
            }
            return escapseValues;
        }
        return super.getParameterValues(name);
    }
   
}
分享到:
评论

相关推荐

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

    首先说一下思路,防止这种类似于注入攻击,就是使用拦截器(Filter)处理特殊字符或过滤特殊字符 今天介绍一个方法,利用覆盖Servlet的getParameter方法达到处理特殊字符的目的来解决(防止)Xss攻击 web.xml,需要的...

    XSS跨站脚本攻击在Java开发中防范的方法

    XSS跨站脚本攻击在Java开发中防范的方法

    基于Java的高级XSS攻击过滤器设计源码

    高级XSS攻击过滤器 - 基于Java开发,包含33个文件,如XML、JAVA、...该系统实现了一个有选择地过滤XSS攻击代码的功能,通过Java技术实现界面交互和功能模块,为用户提供了一个高效、安全的XSS攻击防御解决方案。

    防止XSS攻击xssProtect

    防止XSS攻击的开源Java的三个jar包antlr-3.0.1.jar、antlr-runtime-3.0.1.jar、xssProtect-0.1.jar

    使用Filter针对Xss攻击,sql注入,服务器访问白名单,以及csrf进行安全校验

    主要使用Filter针对Xss攻击,sql注入,服务器访问白名单,以及csrf进行安全校验 1,主要实现的是三大块功能:Xss攻击,sql注入,服务器白名单,以及csrf 2,此Filter为真实项目部署,在XssHttpServletRequestWrapper...

    java方面xss跨站脚本

    工具:xss-html-filter-master的源码 书籍:XSS跨站脚本攻击剖析与防御(完整版) 所需jar: antlr-3.0.1.jar antlr-runtime-3.0.1.jar xssProtect-0.1.jar

    springboot后端实现防御xSRF攻击的策略代码.zip

    本包中,含有2个实现springboot后端实现防御xSRF攻击的策略代码,具体使用,还需要看您的具体场景,进行区分使用!CSRFInterceptor.java、XSRFHandlerInterceptor.java

    蚂蚁java架构师第七/八期含项目

    09.如何防御XSS攻击与防止抓包篡改数据01(124分钟) 09.如何防御XSS攻击与防止抓包篡改数据02(63分钟) 10.springsecurity实现动态权限控制(63分钟) 11.springsecurity整合jwt实现接口授权01(107分钟) 11.spring...

    积分管理系统java源码-xss-defense:xss防御

    虽然有大量的XSS攻击方式,但是遵循一些简单的规则可以完全抵御这些严重攻击。本文不探讨XSS对技术、业务的影响,只说XSS可以导致攻击者能够获取到操作浏览器的做任何事情的能力。 都可以通过在服务端执行适当的验证...

    jello-optimizer-jsp-xss:防御 jello 中的 XSS 攻击

    jello-optimizer-velocity-xss 与FIS组@2betop发布的类似 自动将JSP内容区的变量加 fn:escapeXml 包裹,用于防止恶意代码执行。 另外,对于标签强制加入属性escapeXml="true" 使用 安装 npm install -g jello-...

    lucy-xss-filter

    Lucy-XSS:XssFilter,XssPreventer Lucy-XSS是一个包含两个防御模块的开源库,用于保护Web应用程序免受XSS攻击。 它支持基于白名单规则的安全策略。 当前的默认规则是Naver的标准。 您可以根据需要更改默认规则。...

    阿里云java短信验证码源码-ymdx-security:义码当仙之互联网安全架构

    如何防御XSS攻击 将脚本特殊字符,转换成html源代码进行展示。 汉字编码: 步骤:编写过滤器拦截所有getParameter参数,重写XssHttpServletRequestWrapper,将参数特殊字符转换成html源代码保存。 @WebFilter...

    HttpParamConvertor.java

    使用ServletFilter进行XSS防御,重点是过滤HttpServletRequest中的Paramter或Body中的字符串,使用正则表达式进行匹配,根据攻击特征进行拦截。附件中包括几种特征编码和正则拦截实现。

    基于SpringBoot+Mybatis开发的分布式校园租赁系统源码,适合新手学习,本科毕业生设计,java课程设计等

    基于SpringBoot+Mybatis开发的分布式校园租赁系统 ,项目经过严格测试,确保可以运行!项目基于Java Web,前端用网页展现。该系统包括两个子系统:一是后台管理系统,供管理员使用。...使用AOP技术进行XSS防御

    Web安全深度剖析(张柄帅)

    全书分4 篇共16 章,除介绍Web 安全的基础知识外,还介绍了Web 应用程序中最常见的安全漏洞、开源程序的攻击流程与防御,并着重分析了“拖库”事件时黑客所使用的攻击手段。此外,还介绍了渗透测试工程师其他的一些...

    Web安全培训ppt(适合初学者)

    XSS(跨站脚本攻击):反射型XSS、存储型XSS、DOM XSS CSRF(跨站请求伪造) SSRF(服务器端请求伪造) 文件上传下载:富文本编辑器 弱口令: X-Scan、Brutus、Hydra、溯雪等工具 其它漏洞: 4、逻辑漏洞(3天) ...

    java恶意代码检测源码-Paper:网络安全技术和漏洞分析白皮书

    慢速http拒绝服务攻击及防御方案 由交互式扫描联想到的实时漏洞感知方法 Recognizing C Code Constructs In Assembly SDL-软件安全设计初窥 AWVS AcuSensor功能分析 MobSF框架及源代码分析 PHP反序列化漏洞初窥 ...

    大型分布式网站架构与实践

     3.1.1 XSS攻击 128  3.1.2 CRSF攻击 130  3.1.3 SQL注入攻击 133  3.1.4 文件上传漏洞 139  3.1.5 DDoS攻击 146  3.1.6 其他攻击手段 149  3.2 常用的安全算法 149  3.2.1 数字摘要 149  3.2.2 对称加密...

    CSRF(跨站请求伪造)详细说明

    通常情况下,有三种方法被广泛用来防御CSRF攻击:验证token,验证HTTP请求的Referer,还有验证XMLHttpRequests里的自定义header。鉴于种种原因,这三种方法都不是那么完美,各有利弊。在跨站请求伪造(CSRF)攻击...

    AWAE-PREP:该存储库将作为“主”存储库,其中包含OSWE的预备阶段中完成的所有培训和教程以及AWAE课程。 此仓库可能包含我和各种课程的自定义代码

    AWAE PREP布局该存储库将作为“主”存储库,其中包含为OSWE和AWAE课程一起准备...7 / dev / random:管道挑战 8 了解Java反序列化教程 9 练习Java反序列化漏洞挑战/教程 10 SQL注入攻击和防御书后期准备细目完成课程后

Global site tag (gtag.js) - Google Analytics