第11章 高度なプログラミング / 第2回 模擬試験
PHPのSQLインジェクション対策に関する次の記述のうち、正しいものはどれか。
プリペアドステートメントを使えば、SQLインジェクションを防止できる。
正解
ユーザー入力をそのままSQL文に文字列連結しても安全である。
`mysql_query()`関数(廃止済み)は現在も推奨される安全な手段である。
SQLインジェクション対策には`htmlspecialchars()`を使えばよい。
解説
プリペアドステートメント(プレースホルダ+バインド)はSQL文とデータを分離するため有効な対策です。`htmlspecialchars()`はXSS対策であり、SQLインジェクション対策にはなりません。(参照: 独習PHP 第4版 第11章 高度なプログラミング 11.2節 セキュリティ対策 p.599〜616)