-1

我一直在查看本教程以获取有关切换到 PDO 的帮助:http ://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

但是,只有一件事我找不到。

假设我有一个名为“用户”的文本输入表单

那么,PDO 的 PHP 代码是否如下所示:

$name = $_POST['name'];
$stmt = $db->prepare("INSERT INTO table(name) VALUES(?)");
$stmt->execute(array($name));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

基本上我要问的是这是否安全。我知道 PDO 与 mysql_* 不同,因为您不再使用 mysql_real_escape_string 了,但我需要做的就是确保不会将恶意数据放入数据库吗?

4

1 回答 1

1

据我所知,SQL 注入 PDO 几乎是不可能的(或者至少我还没有听说过这样做的方法)。

即使您使用 mysql_real_escape,您也可能会在函数中出现一些微小的未知错误或函数失败的一些情况。PDO 的工作方式是它首先“准备”,它列出要做什么,它制定操作,工作。然后它会带入您输入的内容。SQL 注入通过进入查询来工作

简而言之,

$query = "INSERT INTO table(name) VALUES($name)";

是脆弱的。即使你逃脱了它,你也可能不会完全安全。

如果你准备它,它不会考虑 $name。因此,黑客无法进入查询。只有在它已经计算出要调用哪些操作之后,它才会相应地放入所有内容,从而使黑客几乎不可能以任何方式修改查询。

于 2013-10-17T18:24:47.240 回答