1

可能重复:
在 PHP 中防止 SQL 注入的最佳方法

我通过addslashes($str).

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

4

5 回答 5

2

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

于 2012-07-18T18:34:24.690 回答
1

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

于 2012-07-18T18:35:36.320 回答
0

就在这里。您可以根据预期值检查以下任何内容的所有参数:

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

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

  • 始终过滤文件上传,从不执行上传的任何内容。
  • 永远不要执行 SQL 或评估直接包含用户输入的代码。始终首先解析您的输入,以确保它不包含任何异常。
于 2012-07-18T18:39:23.940 回答
-1

你可以这样做:

<?php  
    $query = mysql_query("SELECT id FROM users WHERE username =   '".mysql_real_escape_string($username)."' AND password = '".mysql_real_escape_string($password)."'");  
?>  
于 2012-07-18T18:34:55.860 回答
-1

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

于 2012-07-18T18:35:42.640 回答