我需要确定,我的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进行数据库授权是安全的吗?
答案 0 :(得分:0)
那么,您实际上是在问我们文档是否正确?
为什么只有这部分?文档中有数十亿的陈述。为什么不通过在Stack Overflow上为每个问题提出一个全新的问题来验证它们?
答案 1 :(得分:0)
是的,您对PDO的理解是正确的 - 数据会自动清理。
至于使用root,我会创建一个具有最小可能权限的用户(读/写一个数据库)。您可能没有安全问题,但是如果您这样做,则可以通过使用权限限制访问来防止更多问题。