使用PDO防止SQL注入

时间:2014-03-10 10:59:31

标签: php mysql pdo

我需要确定,我的SQL查询将是100%安全的。

如果我使用PDO命名的占位符,有人可以实现SQL注入吗?

关于文档,使用PDO,首先发送查询,然后基本上意味着注入不可能的值是正确的吗?

<?php
try {
    $DBH = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'root', '123456789');
    $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
catch (PDOException $e) {
    echo $e->getMessage();
}

$data = array(
    'email' => $_POST['email'],
    'password' => md5($_POST['password']),
    'name' => $_POST['name']'
);

$STH = $DBH->prepare("INSERT INTO members (email, password, name) values (:email, :password, :name)");
$STH->execute($data);
?>

另外,使用root进行数据库授权是安全的吗?

2 个答案:

答案 0 :(得分:0)

那么,您实际上是在问我们文档是否正确?

为什么只有这部分?文档中有数十亿的陈述。为什么不通过在Stack Overflow上为每个问题提出一个全新的问题来验证它们?

答案 1 :(得分:0)

是的,您对PDO的理解是正确的 - 数据会自动清理。

至于使用root,我会创建一个具有最小可能权限的用户(读/写一个数据库)。您可能没有安全问题,但是如果您这样做,则可以通过使用权限限制访问来防止更多问题。