【问题标题】:Prevent SQL injection with regular expression? [duplicate]使用正则表达式防止 SQL 注入? [复制]
【发布时间】:2012-06-04 18:45:26
【问题描述】:

可能重复:
Best way to prevent SQL Injection in PHP

我想问你我是否需要使用下面代码中的其他东西:

         if(isset($_POST['submit'])) {
         $username = $_POST['username'];
         $password = $_POST['password'];
         $validate = '/^[a-z]+[a-z0-9]*[.-_]*$/i';
               if ((preg_match($validate , $username)==true) && (preg_match($validate ,                                                                                     $password)==true)) {

                        some query...   
               } else {
                        echo "You've used some characters that aren't allowed.";
               }
       }else {
               echo 'Not logged!';  
       }

这个正则表达式能很好地让我免于 SQL 注入吗?或者你能给我任何其他的建议来让我的登录表单足够好!

【问题讨论】:

标签: php mysql sql sql-injection


【解决方案1】:

如果您的驱动程序仍然是较旧的驱动程序,请使用mysql_real_escape_string,或者如果您使用较新的pdo驱动程序,请使用带有参数绑定的预处理语句,或者来自mysqli的mysqli_real_escape_string

http://php.net/manual/en/function.mysql-real-escape-string.php

http://php.net/manual/en/pdo.prepared-statements.php

http://php.net/manual/en/mysqli.real-escape-string.php

【讨论】:

  • 对数据库的错误 sql 查询怎么办?即使使用准备好的语句,它们也会被发送,这对服务器生产力不利。
猜你喜欢
  • 2011-11-17
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2010-09-07
  • 2012-11-20
相关资源
最近更新 更多