使用正则表达式阻止SQL注入?

时间:2012-06-04 18:45:26

标签: php mysql sql sql-injection

  

可能重复:
  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注入?或者您能否给我任何其他建议以使我的登录表格变得更好!

1 个答案:

答案 0 :(得分:3)

如果您的驱动程序仍然是较旧的驱动程序,则使用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