可能重复:
在 PHP 中防止 SQL 注入的最佳方法
我通过addslashes($str)
.
当我将输入从文本字段保存到 MySQL 数据库时,这是否足以防止 MySQL 注入,或者我是否需要进一步过滤输入,因为您可以绕过这种转义方法?或者有没有更好的方法来做到这一点?
您应该阅读 PDO 中的准备好的语句: http ://www.php.net/manual/en/pdo.prepared-statements.php
转义引号绝对是不够的。最安全的做法是使用参数绑定。请参阅mysqli_stmt::bind_param的文档。
就在这里。您可以根据预期值检查以下任何内容的所有参数:
这些是一些可以为您省去很多麻烦的基本检查。另外,为了避免更多问题:
你可以这样做:
<?php
$query = mysql_query("SELECT id FROM users WHERE username = '".mysql_real_escape_string($username)."' AND password = '".mysql_real_escape_string($password)."'");
?>
我建议使用 mysql_real_escape_string 或类似函数(取决于您使用的数据库访问方法)。