当前位置: 首页 > 编程笔记 >

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

祁博雅
2023-03-14
本文向大家介绍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关键词脚本检查正则表达式,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

 类似资料:
  • 本文向大家介绍正则表达式查找相似单词的方法,包括了正则表达式查找相似单词的方法的使用技巧和注意事项,需要的朋友参考一下 本文通过展示各种不同的正则表达式结构,以及在实际应用中会用到的技巧,熟悉掌握正则表达式的应用。 问题描述: 在这个实例中你要解决如下几个问题。 1、想要在一个字符串中找到所有的color和colour。 2、想要找到这3个以"at”结尾的单词中的任意一个:bat、cat或rat。

  • 我需要一个正则表达式来检查和删除< code > membership user < code > userName 中的特殊字符。 当我第一次将网站设置为测试版时,我没有考虑到特殊字符不是获取用户名的好方法,“在我的应用程序中”。 下面我有一段模板代码,写得不太正确,但是给了愿意帮助的人一个好的开始。 --我需要从用户名中删除所有特殊字符和空格,同时更新用户名。 当我说我所说的特殊字符~、`、!

  • 问题内容: 我创建了以下SQL正则表达式模式以匹配ISBN: 我使用以下值作为测试数据;但是,未提交数据: 我哪里错了? 问题答案: 您可以使用LIKE执行此操作。 您需要一些OR才能处理不同的ISBN 10和13格式 对于以上字符串:

  • 问题内容: 我问这个问题有点傻,但是从我读过的所有内容来看,这应该有效,但对我而言却无效。我只是想使用正则表达式匹配字符串中的整个单词。 因此,如果我试图在句子中找到单词“ the”,则对于“褐狐快速越过懒狗”应该返回true,而对于“褐狐快速越过懒狗”则返回false。 。 我已经试过了: 我也尝试过: 我也尝试过此正则表达式:“ \ bthe \ b” 而且它们总是返回false。我觉得我在这

  • 问题内容: 我有一个像 我需要一个正则表达式给我以下输出: 我努力了 但这给 问题答案: 因此,您想要(+一个整数)后跟任何内容,直到下一个(或字符串结尾),对吗? 然后,您需要告诉正则表达式引擎: 在您的正则表达式中,尽可能匹配-直到字符串结尾的所有内容。另外,您将比赛的第二部分本身做了。 我的解决方案说明:

  • 有从字符串中提取SQL查询的正则表达式吗?我不想验证任何SQL语法,而是只想提取一组SQL命令。这是为了以灵活的方式解析给定的SQL文件/字符串。 给出了以下SQL文件/字符串示例: 一些伪代码示例是:。在将来,我希望用所有(可能的)命令来扩展它。 查找具有以下任一项的起始匹配:(UPDATESELECTINSERTINTO) 零个或多个(包括空格和换行符) 停止在处,它分隔SQL查询。 只要通过