转义引号php和mysql

时间:2012-07-18 18:32:07

标签: php mysql sql security escaping

  

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

我通过addslashes($str)转义引号。

当我将输入从文本字段保存到MySQL数据库时,是否足以防止MySQL注入,或者我是否需要进一步过滤输入,因为您可以绕过此转义方法?或者有更好的方法吗?

5 个答案:

答案 0 :(得分:2)

您应该阅读PDO中的预准备语句: http://www.php.net/manual/en/pdo.prepared-statements.php

答案 1 :(得分:1)

转义报价绝对不够。最安全的做法是使用参数绑定。请参阅mysqli_stmt::bind_param的文档。

答案 2 :(得分:0)

是的,有。您可以检查以下任何内容的所有参数,具体取决于预期值:

  • 变量的值是否有意义?
  • 变量的值是否在合理的值范围内?
  • 变量的值是否在预定义的最大长度内?

这些是一些基本检查,可以为您节省很多麻烦。另外,为了避免更多问题:

  • 始终过滤文件上传,永不执行上传的任何内容。
  • 从不执行SQL或评估具有用户输入直接部分的代码。始终首先解析您的输入,以确保它不包含任何异常。

答案 3 :(得分:-1)

你可以这样做:

<?php  
    $query = mysql_query("SELECT id FROM users WHERE username =   '".mysql_real_escape_string($username)."' AND password = '".mysql_real_escape_string($password)."'");  
?>  

答案 4 :(得分:-1)

我建议使用mysql_real_escape_string或类似功能(取决于您使用的数据库访问方法)。