php代码如何防SQL注入

解决方案 »

  1.   

    好象mysql的没办法做到同时执行多条语句,一次只能执行一条语句。只要把几个字符注意一下就可以吧
      

  2.   

    对用户的输入以及需要通过get方式提交的数据进行详细严格的数据类型校验,防止有心之人进行sql注入。
      

  3.   

    永远不要使用超级用户或所有者帐号去连接数据库。要用权限被严格限制的帐号。 检查输入的数据是否具有所期望的数据格式。PHP 有很多可以用于检查输入的函数,从简单的变量函数和字符类型函数(比如 is_numeric(),ctype_digit())到复杂的 Perl 兼容正则表达式函数都可以完成这个工作。 如果程序等待输入一个数字,可以考虑使用 is_numeric() 来检查,或者直接使用 settype() 来转换它的类型,也可以用 sprintf() 把它格式化为数字。使用数据库特定的敏感字符转义函数(比如 mysql_escape_string() 和 sql_escape_string())把用户提交上来的非数字数据进行转义。如果数据库没有专门的敏感字符转义功能的话 addslashes() 和 str_replace() 可以代替完成这个工作要不择手段避免显示出任何有关数据库的信息,尤其是数据库结构
      

  4.   

    晕,有那么多吗?用一个函数就可以搞定了addcslashes
      

  5.   

    我做开源软件多年,这方面的经验还是有的。
    基本上要注意两点,第一是要对提交过来的变量addslashes,第二要对SQL语句中的变量部分,一定要加上单引号。基本上做到这两点就可以了。加单引号的范例:$db->query("update table set field='$value'");
    昨天居然看到一个帖子居然有人说这里的单引号是错误的,简直是笑死人了。这是最安全的做法
      

  6.   

    http://blog.chinaunix.net/u/29134/showart_258913.html