激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - JAVA教程 - java 過濾器filter防sql注入的實現代碼

java 過濾器filter防sql注入的實現代碼

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

下面小編就為大家帶來一篇java 過濾器filter防sql注入的實現代碼。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

實例如下:

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驗證; flag = false 做所有字段的驗證;
        boolean flag = true;
        if(flag){
            //只對URL做xss校驗
            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{
            
            //對請求中的所有東西都做校驗,包括表單。此功能校驗比較嚴格容易屏蔽表單正常輸入,使用此功能請注意。
            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;
    }
    
    //需要增加通配,過濾大小寫組合
    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腳本字符處理掉,具體的頁面處理還需要后臺處理!!

關于這篇java 過濾器filter防sql注入的實現代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人久久久久久久久 | 日韩欧美电影一区二区三区 | 亚洲福利在线视频 | 精品在线免费播放 | 在线视频1区| 羞羞视频免费视频欧美 | 国产精品成人久久 | 精品久久久久久国产 | 久久久久一区二区三区 | 国产一区二区三区视频免费 | 午夜91视频 | 欧美一级做 | 久久精品国产亚洲一区二区 | 久草视频2| 日本教室三级在线看 | 成人综合区一区 | 黄色特级片黄色特级片 | 一级网站片 | 日本精品中文字幕 | 精品av在线播放 | 91高清视频在线观看 | 久久99精品久久久久久小说 | 亚洲一区二区三区在线免费观看 | 国产免费人做人爱午夜视频 | 久久中出| 中文字幕在线成人 | 久久久免费观看完整版 | 国产精品久久亚洲 | 精品久久久久久综合日本 | 欧美成人午夜精品久久久 | 极品销魂一区二区三区 | 最新中文字幕第一页视频 | 国产高清毛片 | 黄色特级 | 视频一区二区三区视频 | 91麻豆精品国产91久久久更新资源速度超快 | 日韩精品a在线观看 | 国产精品麻豆一区二区三区 | 黄色伊人网站 | 99最新网址 | 成人影片在线免费观看 |