简单的预防XSS攻击,可以直接粘贴使用。

lucky
2019-02-23 / 0 评论 / 532 阅读 / 正在检测是否收录...

简单的预防XSS攻击,可以直接粘贴使用。

什么是XSS

XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击。本来缩小应该是CSS,但为了和层叠样式(Cascading Style Sheet,CSS)有所区分,故称XSS。

对于攻击者来说,能够让受害者浏览器执行恶意代码的唯一方式,就是把代码注入到受害者从网站下载的网页中。

不说那么多无用的,直接上代码!

OnRequestWrap.java


import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

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

import org.apache.commons.lang.StringUtils;

/***
 * [XXS跨站脚本攻击过滤处理转换器]
 * 
 * @version v1.3
 * @see 相关类
 * @since 相关/版本
 */
public class OnRequestWrap extends HttpServletRequestWrapper{
    
    /* XSS跨站脚本攻击转换签 */
    private String[] xssSource = new String[]{"\"", "'", "","data:", 
            /* 依次是URL编码, HTML10HEX,HTML16HEX,JSunicode,JS16HEX,JS8HEX */
            "data%3A", "data:", "data:", "\\u0064\\u0061\\u0074\\u0061\\u003a", "\\x64\\x61\\x74\\x61\\x3a", "\\144\\141\\164\\141\\72", /*英文冒号*/
            "%3C", "<", "<", "\\u003c", "\\x3c", "\\74",/*英文冒号右尖括号*/
            "%3E", ">", ">", "\\u003e", "\\x3e", "\\76"}; /*英文冒号左尖括号*/
    /* XSS跨站脚本攻击转换后 */
    private String[] xssTarget = new String[]{"“", "‘", "《", "》","data:",
            /* 依次是URL编码, HTML10HEX,HTML16HEX,JSunicode,JS16HEX,JS8HEX */
            "data%3A", "data:", "data:", "\\u0064\\u0061\\u0074\\u0061\\u00ff1a", "\\x64\\x61\\x74\\x61\\xff1a", "\\144\\141\\164\\141\\177432",/* 中文冒号 */
            "%E3%80%8A", "《", "《", "\\u00300a", "\\x300a", "\\30012",/* 中文左尖括号 */
            "%E3%80%8B", "》", "》", "\\u00300b", "\\x300b", "\\30013"};/* 中文右尖括号 */
    
    public OnRequestWrap(HttpServletRequest request) {
        super(request);
    }
    
    /* 格式化替换 */
    private String format(String name){
        return StringUtils.replaceEach(name, xssSource, xssTarget);
    }
    
    @SuppressWarnings({ "rawtypes", "unchecked" })
    @Override
    public Map getParameterMap() {
        String key = "";
        Map paramMap =  super.getParameterMap();
        HashMap rm = new HashMap();
        for (java.util.Iterator> iterator = paramMap.entrySet().iterator(); iterator.hasNext(); ) {
            Map.Entry entry = iterator.next();
            String [] values = entry.getValue();
            key = entry.getKey();
            for (int i = 0; i  -1) {
            logger.debug("--" + url.indexOf(type));
            return true;
        } else {
            return false;
        }
    }

    @Override
    public void destroy() {
    }

}

然后在你项目中的web.xml中添加

   
       XssFilter
       com.gainet.filter.XSSFilter
    
    
       XssFilter
       /*
    

这样就可以使用了,亲测!filte 有加载顺序,位置一定要放好!

0

评论 (0)

取消