PHP PDO語句是自動轉義還是隻準備語句?PDO語句是否自動轉義?
例如,假設$username
和$password
是用戶輸入。下面的代碼是否安全,還是易受注入?
$dbh = new PDO("mysql:host=localhost;dbname=mydb", $my_mysql_username, $my_mysql_password);
$sth = $dbh->query("SELECT * FROM users WHERE username='$username' AND password='$password'");
$result = $sth->fetch();
if(!$result){
$dbh->exec("INSERT INTO users (username, password) VALUES ('$username', '$password')");
}
(上面的代碼純屬假設,例如僅供參考。)
如果它們不會自動逃脫,並提供PDO在這種情況下在mysql_
功能的任何額外的保護?
AFAIK他們不是,因爲怎麼會它知道查詢字符串的哪部分要逃脫?否則它會意外地逃避預期的報價。 –