mysql_real_escape_string 可以安全地清理用户输入吗?
出于对 SQL 注入的担忧,开发人员经常使用 mysql_real_escape_string 来清理用户输入。然而,作为唯一衡量标准,其有效性引发了对其可靠性的质疑。
mysql_real_escape_string 的局限性
虽然 mysql_real_escape_string 是一个有用的实用程序,但它有局限性:
更稳健的方法:准备好的语句
为了增强安全性,开发人员建议使用准备好的陈述。这种方法利用占位符将用户数据与 SQL 查询分开,使其不受输入篡改的影响。下面是一个示例:$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)"); $stmt->bindParam(1, $name); $stmt->bindParam(2, $value);
其他保护措施
除了准备好的语句之外,还可以考虑使用:结论
为了获得最佳安全性,单独使用 mysql_real_escape_string 是不够的。相反,合并准备好的语句作为防止 SQL 注入的主要保护措施。此外,考虑使用 HTMLPurifier 和严格的输入验证来实现用户输入清理的综合方法。以上是mysql_real_escape_string 是否提供足够的保护来防止 SQL 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!