2012-07-25 41 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);