一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - java 過(guò)濾器filter防sql注入的實(shí)現(xiàn)代碼

java 過(guò)濾器filter防sql注入的實(shí)現(xiàn)代碼

2020-06-07 13:24jingxian JAVA教程

下面小編就為大家?guī)?lái)一篇java 過(guò)濾器filter防sql注入的實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

實(shí)例如下:

XSSFilter.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
public void doFilter(ServletRequest servletrequest,
            ServletResponse servletresponse, FilterChain filterchain)
            throws IOException, ServletException {
        
 
        //flag = true 只做URL驗(yàn)證; flag = false 做所有字段的驗(yàn)證;
        boolean flag = true;
        if(flag){
            //只對(duì)URL做xss校驗(yàn)
            HttpServletRequest httpServletRequest = (HttpServletRequest) servletrequest;
            HttpServletResponse httpServletResponse = (HttpServletResponse) servletresponse;
            
            String requesturi = httpServletRequest.getRequestURL().toString();
            requesturi = URLDecoder.decode(requesturi, "UTF-8");
            if(requesturi!=null&&requesturi.indexOf("alipay_hotel_book_return.html")!=-1){
                filterchain.doFilter(servletrequest, servletresponse);
                return;
            }
            if(requesturi!=null&&requesturi.indexOf("account_bank_return.html")!=-1){
                filterchain.doFilter(servletrequest, servletresponse);
                return;
            }
            if(requesturi!=null&&requesturi.indexOf("/alipay/activity.html")!=-1){
                filterchain.doFilter(servletrequest, servletresponse);
                return ;
            }
            if(requesturi!=null&&requesturi.indexOf("/alipayLogin.html")!=-1){
                filterchain.doFilter(servletrequest, servletresponse);
                return ;
            }
            RequestWrapper rw = new RequestWrapper(httpServletRequest);
            String param = httpServletRequest.getQueryString();
            if(!"".equals(param) && param != null) {
                param = URLDecoder.decode(param, "UTF-8");
                String originalurl = requesturi + param;
                
                String sqlParam = param;
                //添加sql注入的判斷
                if(requesturi.endsWith("/askQuestion.html") || requesturi.endsWith("/member/answer.html")){
                    sqlParam = rw.cleanSQLInject(param);
                }
                
                String xssParam = rw.cleanXSS(sqlParam);
                requesturi += "?"+xssParam;
                
                
                if(!xssParam.equals(param)){
                    System.out.println("requesturi::::::"+requesturi);
                    httpServletResponse.sendRedirect(requesturi);
                    System.out.println("no entered.");
//                  filterchain.doFilter(new RequestWrapper((HttpServletRequest) servletrequest), servletresponse);
                    return ;
                }
            }
            filterchain.doFilter(servletrequest, servletresponse);
        }else{
            
            //對(duì)請(qǐng)求中的所有東西都做校驗(yàn),包括表單。此功能校驗(yàn)比較嚴(yán)格容易屏蔽表單正常輸入,使用此功能請(qǐng)注意。
            filterchain.doFilter(new RequestWrapper((HttpServletRequest) servletrequest), servletresponse);
        }
    }
requestMapping:
 
 
public RequestWrapper(){
        super(null);
    }
 
    public RequestWrapper(HttpServletRequest httpservletrequest) {
        super(httpservletrequest);
    }
 
    public String[] getParameterValues(String s) {
        String str[] = super.getParameterValues(s);
        if (str == null) {
            return null;
        }
        int i = str.length;
        String as1[] = new String[i];
        for (int j = 0; j < i; j++) {
            as1[j] = cleanXSS(cleanSQLInject(str[j]));
        }
 
        return as1;
    }
 
    public String getParameter(String s) {
        String s1 = super.getParameter(s);
        if (s1 == null) {
            return null;
        } else {
            return cleanXSS(cleanSQLInject(s1));
        }
    }
 
    public String getHeader(String s) {
        String s1 = super.getHeader(s);
        if (s1 == null) {
            return null;
        } else {
            return cleanXSS(cleanSQLInject(s1));
        }
    }
 
    public String cleanXSS(String src) {
        String temp =src;
 
        System.out.println("xss---temp-->"+src);
    src = src.replaceAll("<", "<").replaceAll(">", ">");
    // if (src.indexOf("address")==-1)
    //  {
     src = src.replaceAll("\\(", "(").replaceAll("\\)", ")");
        //}
   
    src = src.replaceAll("'", "'");
    
    Pattern pattern=Pattern.compile("(eval\\((.*)\\)|script)",Pattern.CASE_INSENSITIVE); 
      Matcher matcher=pattern.matcher(src); 
      src = matcher.replaceAll("");
 
      pattern=Pattern.compile("[\\\"\\'][\\s]*javascript:(.*)[\\\"\\']",Pattern.CASE_INSENSITIVE);
      matcher=pattern.matcher(src);
      src = matcher.replaceAll("\"\"");
      
      //增加腳本
      src = src.replaceAll("script", "").replaceAll(";", "")
        .replaceAll("\"", "").replaceAll("@", "")
        .replaceAll("0x0d", "")
        .replaceAll("0x0a", "").replaceAll(",", "");
 
        if(!temp.equals(src)){
            System.out.println("輸入信息存在xss攻擊!");
            System.out.println("原始輸入信息-->"+temp);
            System.out.println("處理后信息-->"+src);
        }
        return src;
    }
    
    //需要增加通配,過(guò)濾大小寫(xiě)組合
    public String cleanSQLInject(String src) {
        String temp =src;
    src = src.replaceAll("insert", "forbidI")
        .replaceAll("select", "forbidS")
        .replaceAll("update", "forbidU")
        .replaceAll("delete", "forbidD")
        .replaceAll("and", "forbidA")
        .replaceAll("or", "forbidO");
    
        if(!temp.equals(src)){
            System.out.println("輸入信息存在SQL攻擊!");
            System.out.println("原始輸入信息-->"+temp);
            System.out.println("處理后信息-->"+src);
        }
        return src;
    }

xml配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
<filter>
        <filter-name>XssFilter</filter-name>
        <filter-class>cn.com.jsoft.xss.XSSFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>XssFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

以上代碼僅僅將特殊的sql字符,特殊script腳本字符處理掉,具體的頁(yè)面處理還需要后臺(tái)處理!!

關(guān)于這篇java 過(guò)濾器filter防sql注入的實(shí)現(xiàn)代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本一区二区三区久久精品 | 色综合色狠狠天天综合色 | 5g影院天天 | 四虎最新永久免费网址 | 欧美日韩亚洲国内综合网俺 | 唯美清纯 自拍偷 | 爽好舒服宝贝添奶吻戏 | 国语刺激对白勾搭视频在线观看 | 91短视频社区在线观看 | 欧美xxxbrazzers| 亚洲国产精品成人综合久久久 | 亚洲AV无码偷拍在线观看 | 丝瓜视频黄瓜视频 | 韩国一级淫片特黄特刺激 | 国产精选之刘婷野战 | 亚洲国产精久久久久久久 | 欧美高清videosex极品 | 极品美女写真菠萝蜜视频 | 天天色踪合合 | 毛片一区二区三区提莫影院 | 大陆男同志gayxxx | 亚洲国产麻豆 | 火影忍者小南裸羞羞漫画 | 精品91| 2021国产精品视频 | 亚洲欧美成人中文在线网站 | 乳色吐息讲的是什么 | 18性夜影院午夜寂寞影院免费 | 性欧美xxxxx护士另类 | 久热人人综合人人九九精品视频 | 国产成人精品三级在线 | 俄罗斯年轻男同gay69 | 亚洲视频在线免费 | 日韩美一区二区三区 | 特黄特色大片免费视频大全 | 無码一区中文字幕少妇熟女网站 | 99久热只有精品视频免费观看17 | 91免费视频国产 | 天天色综合6 | 亚洲AV久久无码精品蜜桃 | 超级乱淫变态伦短篇小说全集 |