php - PDO::准备安全

标签 php mysql pdo

我读到过 PDO::Prepare 函数创建一个安全 查询。这是否意味着不需要手动文字化转义字符?比如反斜杠字符。

最佳答案

绝对不是那个意思。您阅读的内容具有误导性。

“准备好的语句”和“参数化查询”之间存在差异。出于卫生目的,您需要后者。

例如:

$pdo->prepare("SELECT * FROM t1 WHERE col1 = $USER_PROVIDED_VALUE");

即使准备好了也一点都不安全。相反,您必须这样做:

$stmt = $pdo->prepare("SELECT * FROM t1 WHERE col1 = ?");
$stmt->execute(array($USER_PROVIDED_VALUE));

如果您没有正确地参数化查询,就安全性而言,准备查询不会为您做任何事情。

关于php - PDO::准备安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634896/

相关文章:

ASP.NET 中 MSSOAP.SoapClient30 的 PHP 替代方案

mysql - 使空间保持一致

php - 如何强制 mySQL 数据库存储这个特殊字符 : ╠?

php - 从同一个表中选择不同的结果

PHP 比较两个字符串中的一个字符不同,通配符方法

php - 导出pdf表格数据导入mysql

php - 为什么此增值税号验证脚本会返回错误?

Mysql重置分隔符为正常 ';'

mysql - 如何生成带有十六进制(blob)内容的 SQL 插入,例如Flyway迁移脚本

php - 保护 CSV 文件的 SQL 插入免受 SQL 注入(inject)