3

我一直在研究清理用户输入的最有效方法。我的应用程序是一个简单的发布请求,用于对用户进行身份验证。在网上看,我可以找到十几种不同的“最佳”方法。很多这些方法使用不推荐使用的 php 函数或看起来过于复杂。为了连接到我的 sql 数据库,我使用 PDO 类。

在搜索我自己的函数时,我偶然发现了这个:

带有绑定参数的预处理语句不仅更便携、更方便、不受 SQL 注入的影响,而且执行起来通常比插值查询快得多,因为服务器端和客户端都可以缓存查询的编译形式。

我已经使用 prepare 方法来创建我的语句。这是否意味着我可以安全地抵御 SQL 注入攻击?我还应该担心什么?

4

2 回答 2

2

如果您通过准备好的语句将所有用户数据与 PDO 绑定,您应该可以避免注入。您在 SQL 语句中放入的任何未绑定的变量(如排序顺序)都是攻击的开放向量。

于 2012-10-11T15:12:36.177 回答
1

@Ray 已经回答了问题的第一部分。对于第二部分,由于您正在验证您的用户,您还应该担心如何存储他们的密码,使用一些单向加密哈希和盐。并检查使用原始盐从用户输入的密码再次计算哈希是否与数据库条目匹配。如果可能,也使用 https 进行身份验证步骤。

于 2012-10-11T15:16:50.573 回答