2012-07-25 37 views
0

我正在嘗試使用正則表達式搜索字符串。 例如:這是我的樣本字符串在java中檢測查詢的正則表達式

**if (c == 0) { 
       count = 0; 
       du.insert(ipAddress, c); 
      } else { 
       count = c; 
      } 
      getDate(); 
      String query1 = "select * from loginmaster where username = '" + username + "' and password = '" + password + "' ;"; 
      //out.println(query1); 
      //out.println(request.getParameter("Group1")); 
      session.setAttribute("group", request.getParameter("Group1")); 
      if (count < 3) { 
       if (request.getParameter("Group1").equals("With")) { 
        LoginQuery q = new LoginQuery(); 
        checked = q.Checker(query1); 
        if (checked == false) { 
         connection.getConnection(); 
         connection.getDML("insert into attack values('"+ipAddress+"','"+date+"','Attack Detected')"); 
        } 
       }** 

,我試圖用正則表達式

String regExp = "\b(ALTER|CREATE|DELETE|DROP|EXEC(UTE){0,1}|INSERT(+INTO){0,1}|MERGE|SELECT|UPDATE|UNION(+ALL){0,1})\b"; 

String regExp = "(;|\\s)(exec|execute|select|insert|update|delete|create|alter|drop|rename|truncate|backup|restore)\\s"; 

找到這個字符串querys但我沒有得到任何輸出或錯誤。

剩下的代碼是:

Pattern p = Pattern.compile(regExp, Pattern.CASE_INSENSITIVE);     
       while ((line = reader.readLine()) != null) { 
        Matcher m = p.matcher(line); 
        if (m.matches()) { 
         JOptionPane.showMessageDialog(this, "innnnnnnnnnn"); 
         System.err.println(m.group(1)); 
        } 
} 

請幫助

+0

正確的方法來防止SQL注入,允許任意的語句時,就是限制用戶的權限。 – kennytm 2012-07-25 11:54:12

+0

我只想使用正則表達式從源字符串中搜索查詢。 dats它 – Azuu 2012-07-25 11:57:11

回答

0

你的正則表達式不匹配,因爲情況下不匹配與輸入字符串。

用大寫字母寫的正則表達式,但輸入字符串包含小寫字母匹配。因此,可以將正則表達式區分大小寫或將其轉換爲小寫

順便說一句,你的正則表達式不能單獨的查詢insert into attack ...和方法:du.insert(ipAddress, c);