我正在寻找重构一些遗留的PHP代码,我知道PDO通过添加预准备语句等更安全,但我想知道使用PDO::query()
方法是否有任何安全性方面的好处与mysql_query()
方法相比。有吗?
答案 0 :(得分:6)
如果没有PDO或mysql_ *中的错误,数据库查询的安全问题取决于正在运行的查询,而不是用于连接数据库的内容。
如果使用userdata创建不安全的查询并使用PDO::query()
执行它,则与mysql_query()
一样不安全。同样,如果您有安全查询,则使用PDO::query()
运行该查询实际上与mysql_query()
相同。
答案 1 :(得分:1)
不,但如果您使用PDO准备的语句而不是PDO:query(),那么您将完全不受注入攻击,因为它会为您转义变量。
PDO还有其他优于mysql函数的好处......
prepared statements
transactions
ability to switch drivers
can get result rows as objects
etc
答案 2 :(得分:0)
您可以在用户输入的PDO prepeared语句中连接字符串,因此它不会以任何方式更安全。 预先准备的声明也有一些缺点。例如,您无法创建简单查询,其中U使用可变数据量,例如:
WHERE id IN (1,2,5,7,9,23)
如果你知道你只使用MySQL,我建议你选择mysqli而不是PDO。不需要不必要的抽象层。