1

我想知道 PDO 准备好的语句是否可以让我免于 SQL 注入?

示例:$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

我要插入的数据

$data = array('name' => $userInput_1, 'addr' => $userInput_2, 'city' => $userinput_3);

例如 $userInput_2 是 SLQ INJECTION。

$STH = $DBH->("INSERT INTO peoples (name, addr, city) value (:name, :addr, :city)");

在这种情况下执行后会发生什么?

$STH->执行($data);

谢谢你!

4

1 回答 1

0

所有输入都将被正确转义和引用。所以使用 PDO 准备/执行应该可以防止 SQL 注入。

从 php 手册:

调用 PDO::prepare() 和 PDOStatement::execute() 为将使用不同参数值多次发出的语句通过允许驱动程序协商查询计划的客户端和/或服务器端缓存来优化应用程序的性能和元信息,并通过消除手动引用参数的需要来帮助防止 SQL 注入攻击。

于 2012-08-16T12:39:24.573 回答