php专区

 首页 > php专区 > 正则表达式 > sql关键词脚本检查正则表达式的方法

sql关键词脚本检查正则表达式的方法

分享到:
【字体:
导读:
         [导读] sql关键词脚本检查正则表达式的方法...

sql拼装过程中有时候需要把特殊外部的参数拼装到sql语句中去,若不检测外部传入的参数是否含有sql关键词,黑客利用系统这个漏洞注入sql脚本语句进行数据库删除或盗取数据资料。

sql关键词脚本检查正则表达式

b(and|exec|insert|select|drop|grant|alter|delete|update|count|chr|mid|master|truncate|char|declare|or)b|(*|;|+|'|%)

Java语言

/**
 * 是否含有sql注入,返回true表示含有
 * @param obj
 * @return
 */
public static boolean containsSqlInjection(Object obj){
  Pattern pattern= Pattern.compile("\b(and|exec|insert|select|drop|grant|alter|delete|update|count|chr|mid|master|truncate|char|declare|or)\b|(\*|;|\+|'|%)");
  Matcher matcher=pattern.matcher(obj.toString());
  return matcher.find();
}

单元测试

@Test
public void testContainsSqlInjection(){
  boolean b1=SqlUtils.containsSqlInjection("and nm=1");
  assertEquals("b1不为true",true,b1);
  boolean b2=SqlUtils.containsSqlInjection("niamsh delete from ");
  assertEquals("b2不为true",true,b2);
  boolean b3=SqlUtils.containsSqlInjection("stand");
  assertEquals("b3不为false",false,b3);
  boolean b4=SqlUtils.containsSqlInjection("and");
  assertEquals("b4不为true",true,b4);
  boolean b5=SqlUtils.containsSqlInjection("niasdm%asjdj");
  assertEquals("b5不为true",true,b5);
}

总结

以上所述是小编给大家介绍的sql关键词脚本检查正则表达式,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

分享到:
详解Java中的scala正则表达式
Scala 通过 scala.util.matching 包中的 Regex 类来支持正则表达式。 eg:使用正则表达式查找单词 Scala 实例中使用 String 类的 r() 方法构造了一个Regex对象。(也可直接new一个Regex对象实例)然后使用 findFirstIn 方法找到首个匹配项。如果需要查看所有的匹配项可以使用 findAllIn 方法。 可以使用 mkString( ) 方法...
2019手机号码JS正则表达式验证实例代码
概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 简介 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……