【发布时间】:2017-11-10 18:56:16
【问题描述】:
我正在使用 PDO 包来管理我的应用程序数据库。
我使用 PDO::prepare , PDOStatement::execute 和 somtimes PDO::quote , PDO::query / PDO::exec 来执行我的查询
PDO::prepare 和 PDO::quote 是否完全安全?或者我应该做更多的工作来正确验证我的输入。不仅适用于数据库,也适用于 php 代码
谢谢
【问题讨论】:
-
不仅仅是注射。我不应该担心所有输入风险吗?
-
你不应该相信用户输入,是的。但是您提到了 PDO stuff,所以我假设您正在谈论的是 db。如果您要输出用户提供的一些信息,您可能还需要查看 XSS(跨站点脚本)。但实际上,安全性是一个很长的列表,这使得这个问题至少过于宽泛。
-
定义安全。
-
在数据库旁边。我使用 PDO::quote 来(清理)输入值,以便将它们插入到 php 代码中。够了吗?
-
@adeladl 如果您要“清理”您在 PHP 中保留的值,您会如何防止使用
PDO::quote,而这些值可能最终通过一些 HTML 显示?PDO::quote有它自己的目的,它是清理你添加到 database 的值,而不是其他地方,如果你使用准备好的语句 - 清理是基于连接字符集完成的 - 基本上,你可以忘记那个功能。你不能坚持一个功能,并期望它让一切变得安全。如果我把它漆成蓝色,我的车会更快吗?
标签: php mysql database security pdo