国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

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

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

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

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

實(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;
    }
    
    //需要增加通配,過濾大小寫組合
    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腳本字符處理掉,具體的頁面處理還需要后臺(tái)處理!!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久性精品| 99精品免费视频 | 久久丝| 成人精品视频免费 | 国产精品福利在线 | 亚洲国产一区二区三区四区 | 精品国产乱码久久久久久牛牛 | 精品久久一二三区 | 深夜精品 | 欧美日韩国产一区二区三区 | 国产麻豆一区二区三区 | 日韩电影一区二区三区 | 日韩成人在线播放 | 久久久久久久久久久久免费 | 黄色一级免费大片 | 亚洲黄色av | 日韩成人在线视频 | 日本成人片网站 | 91国内外精品自在线播放 | 黄色影院 | 亚洲 欧美 精品 | 欧美一级二级三级视频 | 午夜资源| 日韩中文字幕免费在线播放 | 亚洲免费视频一区二区 | 麻豆av在线播放 | 国产精品毛片无码 | 毛片在线免费观看网站 | 日韩精品区 | 精品久久久久久久久久久久久久久久久久 | 久久久精品在线观看 | 亚洲在线电影 | 成人免费激情视频 | 中文字幕一区二区三 | 国产亚洲欧美美 | 国产精品久久久爽爽爽麻豆色哟哟 | 自拍偷拍在线视频 | 国产精品色一区二区三区 | 国产97人人超碰caoprom | 日韩国产欧美精品 | 一级片在线播放 |