基本情報技術者試験 過去問解説
SQLインジェクションとは?基本情報技術者試験 平成25年度 春期 午前 問40を解説
基本情報技術者試験 平成25年度 春期 午前 問40は、SQLインジェクションに関する理解を問う問題です。検索から入っても、問題文、選択肢、正解、解説、各選択肢がなぜ違うかをこのページだけで確認できます。
問題文
SQLインジェクション攻撃を防ぐ方法はどれか。
この問題の出題ポイント
- SQLインジェクションの定義だけでなく、問題文中の条件がどの選択肢に当てはまるかを確認する。
- 関連タグ: 攻撃手法、マークアップ言語。
選択肢
- ア入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。正解
- イ入力にHTMLタグが含まれていたら,HTMLタグとして解釈されない他の文字列に置き換える。
- ウ入力に,上位ディレクトリを指定する文字列(../)を含むときは受け付けない。
- エ入力の全体の長さが制限を超えているときは受け付けない。
正解
ア: 入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。
解説
SQLインジェクションは入力された文字列に含まれる引用符などのSQL特殊文字をそのままSQL文に連結することで攻撃が成立します。対策は特殊文字をエスケープしたり、プレースホルダ(プリペアドステートメント)を使って、入力をSQL文の構文要素として解釈させないことです。よってアが正解です。
なぜ他の選択肢が違うのか
ア(正解)
入力に含まれるSQL特殊文字を構文として解釈させない対策はSQLインジェクションの根本対策であり正解です。
イ
HTMLタグのエスケープはクロスサイトスクリプティング(XSS)対策で、SQLインジェクションとは別の攻撃に対する対策です。
ウ
「../」の混入を弾くのはディレクトリトラバーサル(パストラバーサル)対策で、SQLインジェクションとは別です。
エ
入力長制限はバッファオーバーフローやサービス拒否対策には有効ですが、SQLインジェクションの根本対策ではありません。
解き方の整理
SQLインジェクションの問題では、選択肢のキーワードだけで判断せず、問題文が示す条件と正解選択肢の説明が一致しているかを見ます。誤答選択肢は、似た用語を混ぜる、主体を入れ替える、目的や範囲を広げすぎる、という形で作られることが多いため、選択肢別解説まで確認しておくと復習効率が上がります。
関連問題
前後の問題
平成25年度 春期 午前 の関連する問題
復習を続ける
間違えた問題、苦手タグ、模試履歴を保存して復習する導線を用意しています。広告なしPro、弱点分析、復習リマインダーは段階的に提供予定です。