GET(任何安全问题?)
可能重复:
准备好的语句如何防止SQL注入攻击?
如果我使用$ _GET和PDO,我还需要逃避它吗? 我的理解是,这对SQL注入是免疫的,但是我仍然对不转义它而感到不安。 那么有人可以看看这个小块代码并告诉我它是否安全?
<?php
$hostname = 'localhost';
$username = 'root';
$password = 'root';
$database = 'database';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare("SELECT * FROM comments WHERE pid = :pid");
$pid = $_GET['pid'];
$stmt->bindParam(':pid', $pid, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
$stmt->execute();
echo $stmt->rowCount();
$dbh = null;
?>
再一次,这是我关心的$ _GET。 任何帮助表示赞赏,谢谢。
是的,准备好的陈述功能完成它所说的内容。 但是既然你问了,我们要清楚,这不是故事的结尾。 我正在研究2010年OWASP十大应用安全风险。
例如: