方法:

  1、预处理。(预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。)

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

  

$sql = "select count(*) as ctr from users where username

='".mysql_real_escape_string($username)."' and

password='". mysql_real_escape_string($pw)."' limit 1";

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

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

  4、自定义函数:

  

/**

* 防止sql注入自定义方法一

* author: xiaochuan

* @param: mixed $value 参数值

*/ 

function check_param($value=null) { 

        #  select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile

    $str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile';

    if(!$value) {

        exit('没有参数!'); 

    }elseif(eregi($str, $value)) { 

        exit('参数非法!');

    }

    return true; 

} 

/**

* 防止sql注入自定义方法二

* author: xiaochuan

* @param: mixed $value 参数值

*/

function str_check( $value ) { 

    if(!get_magic_quotes_gpc()) { 

        // 进行过滤 

        $value = addslashes($value); 

    } 

    $value = str_replace("_", "\_", $value); 

    $value = str_replace("%", "\%", $value); 

   return $value; 

} 

/**

* 防止sql注入自定义方法三

* author: xiaochuan

* @param: mixed $value 参数值

*/

function post_check($value) { 

    if(!get_magic_quotes_gpc()) {

        // 进行过滤  

        $value = addslashes($value);

    } 

    $value = str_replace("_", "\_", $value); 

    $value = str_replace("%", "\%", $value); 

    $value = nl2br($value); 

    $value = htmlspecialchars($value); 

    return $value; 

}

最新文章

  1. 四步完成NodeJS安装,配置和测试
  2. Nginx + CGI/FastCGI + C/Cpp
  3. Android 反编译 -- apktool、dex2jar、jd-gui
  4. TWICImage.SaveToStream内存泄漏的解决办法
  5. hihocode ---1032
  6. 11.cadence.通孔类封装创建[原创]
  7. Ehcache(2.9.x) - API Developer Guide, Key Classes and Methods
  8. scala 安装
  9. dojo demo, server验证username是否已经被使用
  10. OAuth 2.0 for MVC, Two Legged Implementation
  11. kettle连接mysql
  12. (转)linux下如何批量杀JAVA进程或某个进程方法
  13. linux 安装 Elasticsearch5.6.x 详细步骤以及问题解决方案
  14. 从cdn说起
  15. windowns10安装httpd
  16. openfire课程
  17. 跨源资源共享(CORS)概念、实现(用Spring)、起源介绍
  18. Nginx支持WebSocket反向代理-学习小结
  19. 利用RMAN恢复整个数据库
  20. 洛谷 P1039侦探推理

热门文章

  1. mysql忘记root密码后,重新设置、修改root密码
  2. IP地址和端口
  3. Java并发--ReentrantLock原理详解
  4. Python进阶——详解元类,metaclass的原理和用法
  5. WeChair项目Beta冲刺(4/10)
  6. PHP利用FTP上传文件连接超时之开启被动模式解决方法
  7. 505. The Maze II
  8. Eureka心跳健康检查机制和Spring boot admin 节点状态一直为DOWN的排查(忽略某一个节点的健康检查)
  9. Spring 面试详解
  10. Spark学习笔记(三)-Spark Streaming