如下:这是一个防止用户输入的数据中包含SQL的一些关键字的正则表达式

之前一直认为这写的很正确,没多大的问题,而且自己测试也没问题,

因为关键字包含 And,而如果用户输入andy的时候呢,汗,所以还得结合

SQL的一些特点来对这个正则表达式进行修改

注:\s:在正则表达式中表示空格;正则表达式最后的小"i"表示不区分大小写

做出的修改是:select,insert,update,delete这几个关键字,使用的时候前面有可能有或没有空格,但后面必须有一个空格,

所以变成 [\s]*select\s

而and,or,union这些,因为必须前面一个空格,后面一个空格才能生效

所以改成 \sand\s

function inject_check($Sql_Str) {//检查Sql的注入语句,各种关键字。

//原来是这样的:/select|insert|update|delete|and|or|\'|\\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/i
      //$check=preg_match('/[\s]*select\s|[\s]*insert\s|[\s]*update\s|                        [\s]*delete\s|\sand\s|\sor\s|\'|\\*|\*|\.\.\/|\.\/|\sunion\s|\sinto\s|load_file|outfile/i',$Sql_Str);

//不过这样太难看了,所以稍微修改一下,

         $check=preg_match('/[\s]*(select|insert|update|delete)\s|\s(and|or|join|like|regexp|where|union|into)\s|\#|\'|\\*|\*|\.\.\/|\.\/|load_file|outfile/i',$Sql_Str);
      if ($check) {
           echo '<script language="JavaScript">alert("Warnning!!\r\n'.$Sql_Str.' is invalid.");</script>';
           exit();
     }else{
          return $Sql_Str;
     }
}

PHP在使用正则表达式验证,防注入的时候要注意一下的细节的更多相关文章

  1. Yii防注入攻击笔记

    网站表单有注入漏洞须对所有用户输入的内容进行个过滤和检查,可以使用正则表达式或者直接输入字符判断,大部分是只允许输入字母和数字的,其它字符度不允许:对于内容复杂表单的内容,应该对html和script ...

  2. Go语言SQL注入和防注入

    Go语言SQL注入和防注入 一.SQL注入是什么 SQL注入是一种注入攻击手段,通过执行恶意SQL语句,进而将任意SQL代码插入数据库查询,从而使攻击者完全控制Web应用程序后台的数据库服务器.攻击者 ...

  3. 简单实用的PHP防注入类实例

    这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下   本文实例讲述了简单实用的PHP防注 ...

  4. php防注入留言板(simple)

    新手学php,试手案例便是留言板.以前未连接数据库时,我是直接将用户输入的留言写入到一个txt,然后再从txt读取显示(~.~别鄙视). 最近学习了php访问MySQL数据库的一些知识,重写了一下留言 ...

  5. sql 防注入 维基百科

    http://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A SQL攻击(SQL inj ...

  6. favicon.ico应用与正则表达式验证邮箱(可自动删除前后的空格)

    1.favicon.ico制作:favicon.ico可以ps制作;“shortcut icon”中间有一个空格 <head> <link rel="shortcut ic ...

  7. JS正则表达式验证账号、手机号、电话和邮箱

    JS正则表达式验证账号.手机号.电话和邮箱 效果体验:http://keleyi.com/keleyi/phtml/jstexiao/15.htm 验证帐号是否合法 验证规则:字母.数字.下划线组成, ...

  8. Java常用正则表达式验证工具类RegexUtils.java

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexUtils{ /** * 正则表达式 ...

  9. [转]PDO防注入原理分析以及使用PDO的注意事项

    原文:http://zhangxugg-163-com.iteye.com/blog/1835721 好文章不得不转. 我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答 ...

随机推荐

  1. jsTree问题

    1. 问题:刷新页面时,会自动打开刚才上次选中的节点 解决办法:去掉'state'插件 2. 关闭一个node时,使用close_all,不能修改class 注:好像用toggle_node,可以op ...

  2. Git安全配置

      今天收到了阿里云异地登录的短信报警,登录阿里云后台发现,有人从深圳登录了我的服务器(本人在北京),查看详细信息一共登录了5次,前两次是使用的git用户进行登录,后两次已经变成了root用户,怀疑是 ...

  3. TFS实战培训 - 博时基金公司 (2016年8月)

    博时基金管理有限公司是中国内地首批成立的五家基金管理公司之一, 是目前我国资产管理规模最大的基金公司. 博时信息技术部的的软件研发团队是负责公司信息化的核心技术部门,为提升软件产品的研发效率和质量,计 ...

  4. LeetCode149:Max Points on a Line

    题目: Given n points on a 2D plane, find the maximum number of points that lie on the same straight li ...

  5. ADO.NET系列之DataAdapter对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 我们前两篇文章介绍了ADO ...

  6. 构建NetCore应用框架之实战篇(六):BitAdminCore框架架构小结

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.小结 1.前面已经完成框架的第一个功能,本篇做个小结. 2.直接上 ...

  7. eclipse创建Maven工程没有Maven Dependencies

    记一次eclipse创建Maven工程没有Maven Dependencies的坑 Eclipse版本:luna版 maven用的3.5.0 配置本文不提. 这辆天用Eclipse创建maven工程 ...

  8. DDoS防护之TCP防护

    本文由  网易云 发布. TCP协议,相信对于每一个开发工程师都不陌生.由于该协议是一个面向连接,可靠的特性,广泛应用于现在互联网的应用中.如常见的Web.SSH.FTP等都是基于TCP协议.目前TC ...

  9. git提交忽略文件或文件夹

    在项目根目录下面 添加 .gitignore文件 文件中每一行表示需要忽略的文件的正则表达式. .gitignore文件过滤有两种模式,开放模式和保守模式 1. 开放模式负责设置过滤哪些文件和文件夹 ...

  10. orm 练习题

    一: 多表练习查询 1. 自行创建测试数据: 2. 查询学生总人数: 3. 查询“生物”课程和“物理”课程成绩都及格的学生id和姓名: 4. 查询每个年级的班级数,取出班级数最多的前三个年级: 5. ...