正答1
解説
正解は1です。
SQLインジェクション攻撃を防ぐ方法を問う問題です。
SQLインジェクションは、入力欄に不正なSQL文の断片を入力して、データベースを不正に操作する攻撃です。
【選択肢別解説】
1:○ 入力中の「'」などの文字が、SQL文の中で特別な意味をもつ文字として解釈されないようにします。
エスケープ処理やバインド機構(プレースホルダ)の利用がこれに当たり、SQLインジェクションの基本的な対策です。
2:× HTMLタグを無害な文字列に置き換えるのは、クロスサイトスクリプティングの対策です。
3:× 上位ディレクトリを示す「../」を含む入力を拒否するのは、ディレクトリトラバーサルの対策です。
4:× 入力の長さを制限するのは、バッファオーバフローなどの対策です。
短い文字列でもSQLインジェクションは成立するので、根本的な対策にはなりません。
【ポイント】
攻撃名と対策の組合せは頻出です。
SQLインジェクションにはバインド機構、クロスサイトスクリプティングにはエスケープ(サニタイジング)、ディレクトリトラバーサルにはパス名の検査と整理しましょう。