0
可能重複:
How prepared statements can protect from SQL injection attacks?
如果我使用$ _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。任何幫助表示讚賞,謝謝。
如果您需要逃避準備查詢變量 - 然後準備將幾乎完全無用 – zerkms 2012-02-23 02:33:27
換句話說,東西隨便你到一個事先準備好的聲明佔位符 - 數據庫將帶你逸出的照顧,不管數據來自哪裏。 – 2012-02-23 02:36:36
這是一個非常有趣的不安,對於明白(不像準備好的語句)轉義的人不會使你的「數據」「安全」 – 2012-02-23 02:40:15