正答1
解説
正解は1です。
SQLインジェクションは、入力欄に不正なSQLの断片を入力し、データベースへの問合せの内容を不正に変える攻撃です。
対策の基本は、入力値がSQL文の一部として解釈されないようにすることです。
【選択肢別解説】
1:○ 入力文字が、引用符などSQLで特別な意味をもつ文字として解釈されないようにすることが対策です。
具体的には、プレースホルダ(バインド機構)の利用やエスケープ処理を行います。
2:× HTMLタグを無害な文字列に置き換えるのは、クロスサイトスクリプティングの対策です。
3:× 「../」を含む入力を拒否するのは、上位のディレクトリのファイルを不正に読み出すディレクトリトラバーサルの対策です。
4:× 入力の長さの制限は、バッファオーバフローなどへの対策にはなります。
しかし短い文字列でも行えるSQLインジェクションは防げません。
【ポイント】
プレースホルダを使うと、SQL文の構造が先に確定し、入力値は単なる値として扱われます。
攻撃名とその対策の組合せは頻出なので、セットで覚えましょう。