基本情報技術者試験 基本情報技術者試験 平成25年度 春期 午前 午前 問40: SQLインジェクション攻撃を防ぐ方法はどれか。

基本情報技術者試験 平成25年度 春期 午前
Q 4040 / 80
攻撃を防ぐ方法はどれか。
この問の正解率:56.27%(1,395件)
この問題の本文・選択肢・正解・解説(展開)

問題本文

SQLインジェクション攻撃を防ぐ方法はどれか。

選択肢

  • .入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。
  • .入力にHTMLタグが含まれていたら,HTMLタグとして解釈されない他の文字列に置き換える。
  • .入力に,上位ディレクトリを指定する文字列(../)を含むときは受け付けない。
  • .入力の全体の長さが制限を超えているときは受け付けない。

正解

. 入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。

解説

SQLインジェクションは入力された文字列に含まれる引用符などのSQL特殊文字をそのままSQL文に連結することで攻撃が成立します。対策は特殊文字をエスケープしたり、プレースホルダ(プリペアドステートメント)を使って、入力をSQL文の構文要素として解釈させないことです。よってアが正解です。

選択肢ごとの解説

  • .入力に含まれるSQL特殊文字を構文として解釈させない対策はSQLインジェクションの根本対策であり正解です。
  • .HTMLタグのエスケープはクロスサイトスクリプティング(XSS)対策で、SQLインジェクションとは別の攻撃に対する対策です。
  • .「../」の混入を弾くのはディレクトリトラバーサル(パストラバーサル)対策で、SQLインジェクションとは別です。
  • .入力長制限はバッファオーバーフローやサービス拒否対策には有効ですが、SQLインジェクションの根本対策ではありません。

基本情報技術者試験 平成25年度 春期 午前過去問一覧へ戻る・問40