(1)mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集

使用方法如下:

  1. $sql =
    "select count(*) as ctr from users where username
  2. ='".mysql_real_escape_string($username)."' and
  3. password='". mysql_real_escape_string($pw)."' limit 1";

    使用 mysql_real_escape_string() 作为用户输入的包装器,就可以避免用户输入中的任何恶意 SQL 注入。

    (2) 打开magic_quotes_gpc来防止SQL注入

    php.ini中有一个设置:magic_quotes_gpc = Off
      这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,
      比如把 ' 转为 \'等,对于防止sql注射有重大作用。

    如果magic_quotes_gpc=Off,则使用addslashes()函数

    (3)自定义函数

  4. function inject_check($sql_str)
    {
  5. return eregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str);
  6. }
  7.  
  8. function verify_id($id=null)
    {
  9. if(!$id)
    {
  10. exit('没有提交参数!');
  11. } elseif(inject_check($id))
    {
  12. exit('提交的参数非法!');
  13. } elseif(!is_numeric($id))
    {
  14. exit('提交的参数非法!');
  15. }
  16. $id = intval($id);
  17.  
  18. return $id;
  19. }
  20.  
  21.  
     
  22. function str_check( $str )
    {
  23. if(!get_magic_quotes_gpc())
    {
  24. $str = addslashes($str);
    // 进行过滤

  25. }
  26. $str = str_replace("_",
    "\_", $str);
  27. $str = str_replace("%",
    "\%", $str);
  28.  
  29. return $str;
  30. }
  31.  
  32.  
     
  33. function post_check($post)
    {
  34. if(!get_magic_quotes_gpc())
    {
  35. $post = addslashes($post);
  36. }
  37. $post = str_replace("_",
    "\_", $post);
  38. $post = str_replace("%",
    "\%", $post);
  39. $post = nl2br($post);
  40. $post = htmlspecialchars($post);
  41.  
  42. return $post;
  43. }

    转载请注明地址: http://www.phpddt.com/php/228.html 尊重他人劳动成果就是尊重自己!

PHP最全防止sql注入方法的更多相关文章

  1. sql注入方法以及防范

    sql注入方法: 1.数字注入 ; get请求 www.bobo.com?id=1 可以查出 ID等于1的一条数据. 如果有人在链接后面增加  www.bobo.com?id=1 or 1=1 / w ...

  2. 另类的SQL注入方法

    前言:相比基于查询的SQL注入,使用insert.update和delete进行SQL注入显得略显另类 参考自:http://www.exploit-db.com/wp-content/themes/ ...

  3. ref:web 防止SQL注入方法

    ref:https://blog.csdn.net/beidou321/article/details/6482618 小结:spring采用JdbcTemplate来操作sql,一般不要自行拼接sq ...

  4. 防止SQL注入方法总结

    一.参数化SQL 是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,用@来表示参数. 在使用参数化查询的情况下,数据库服务器不会将参数的内容视为 ...

  5. 使用php函数防止SQL注入方法

    什么是SQL注入? SQL注入是指在你系统防御之外,某人将一段Mysql语句注入到你的数据库.注入通常发生在系统要求用户输入数据的时候,比如用户名的输入,用户可能输入的不是一个用户名,而是一段SQL语 ...

  6. DVWA(三):SQL injection 全等级SQL注入

    (本文不定期更新) 一.所需环境: 1.DVWA 2.web环境 phpstudy/wamp 3.burp suite 二.SQL注入产生的原因: 程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  7. DVWA-全等级SQL注入(显注)

    前言: 首先是DVWA环境的搭建: 1.DVWA. 2.PHPSTUDY/WampServer,这里有一个坑,因为他是一体化的,PHP版本必须在5.4以上,否则显注不能打开.或者自己搭建LAMP环境. ...

  8. 防止sql注入方法 如何防止java中将MySQL的数据库验证密码加上 ' or '1'= '1 就可以出现万能密码 的PreparedStatement

    package com.swift; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar ...

  9. 网站防止SQL注入方法

    方法:所有获取GET.POST变量都先进行过滤: 字符串-- htmlspecialchars(addslashes($string))  addslashes() 函数返回在预定义字符之前添加反斜杠 ...

随机推荐

  1. 浅谈JS中的!=、== 、!==、===的用法和区别

    var num = 1;     var str = '1';     var test = 1;     test == num  //true 相同类型 相同值     test === num ...

  2. 1Java开发环境

    1 下载      1.1 oracle官方网站 http://www.oracle.com/index.html      1.2 点击DOWNLOADS http://www.oracle.com ...

  3. [javaSE] 网络编程(TCP,UDP,Socket特点)

    UDP特点: 面向无连接,把数据打包发过去,收不收得到我不管 数据大小有限制,一次不能超过64k,可以分成多个包 这是个不可靠的协议 速度很快 视频直播,凌波客户端,feiQ都是UDP协议 TCP特点 ...

  4. [javaSE] 集合框架(共性方法)

    Collection接口的常用方法 add(),添加一个元素 addAll(),添加一组元素 clear(),清空 remove(),移除一个 removeAll(),移除一组 size(),元素个数 ...

  5. elasticsearch安装指导(new)

    1 直接去官网下载rpm包安装或者下载tar包 2 服务启动后,发现打不开页面,修改yml文件即可 用rpm包安装的软件有一个特点就是不同的目录在不同文件夹,比如config文件夹根据下面进程信息查到 ...

  6. Django基础二之URL路由系统

    一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这 ...

  7. 转:JS判断值是否是数字(两种方法)

    JS判断值是否是数字   1.使用isNaN()函数 isNaN()的缺点就在于 null.空格以及空串会被按照0来处理 NaN: Not a Number /***判断是否是数字***/ 1 2 3 ...

  8. 使用iview-admin2构建的项目,热更新无法启动

    原因:@vue/cli-service版本是3.0.1解决:升级@vue/cli-service到最新版本

  9. 使用IntelliJ IDEA配置Erlang开发环境

    这篇文章比较详细,感谢作者,拷贝过来做个记录 ————————————————————————————————————————————————————————————————————————————— ...

  10. arcgis英文版补丁下载地址

    http://support.esri.com/zh-cn/downloads/patches-servicepacks/list/productid/160