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

服務(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ù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 射逼视频 | 色综合视频一区二区三区 | 风间由美m3u8在线 | 我的妹妹最近有点怪免费播放 | 四虎永久免费地址在线观看 | 色天使亚洲综合在线观看 | 亚洲日本aⅴ片在线观看香蕉 | 国产精品亚洲精品观看不卡 | 3p文两男一女办公室高h | www.日本免费 | 免费高清www动漫视频播放器 | 国产香蕉一区二区在线观看 | 果冻传媒 天美 麻豆 | 欧美日韩亚洲综合在线一区二区 | 日韩在线视精品在亚洲 | 欧美怡红院视频一区二区三区 | 极品ts赵恩静和直男激战啪啪 | 青草视频在线观看免费资源 | 唯美清纯 自拍偷 | 午夜理论片YY4399影院 | 接吻吃胸摸下面啪啪教程 | 麻豆在线传煤 | 91啦在线视频 | 国产欧美一区二区精品久久久 | 国产精品视频免费视频 | h玉足嫩脚嗯啊白丝 | 91亚洲一区二区在线观看不卡 | 91yellow吧字幕网zmff7 | 日韩毛片免费线上观看 | bt天堂在线最新版在线 | 欧美伊人久久久久久久久影院 | 亚洲第一色视频 | 日本高清视频网站 | 娇妻被朋友征服中文字幕 | 欧美洲大黑香蕉在线视频 | 国产精品免费看香蕉 | 我被黑人彻底征服的全文 | 国产四虎 | 精品国产福利在线 | 波多野结衣之双方调教在线观看 | 色视频国产 |