PHP 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')");
}
(上記のコードは純粋に仮説であり、例としてのみ使用されています。)
それらが自動的にエスケープされない場合、PDOmysql_
はこの状況で関数に対して追加の保護を提供しますか?