基本情報技術者試験 過去問解説

SQLインジェクションとは?基本情報技術者試験 令和6年度 科目A 問10を解説

基本情報技術者試験 令和6年度 科目A 問10は、SQLインジェクションに関する理解を問う問題です。検索から入っても、問題文、選択肢、正解、解説、各選択肢がなぜ違うかをこのページだけで確認できます。

問題文

SQLインジェクションの対策として,有効なものはどれか。

この問題の出題ポイント

  • SQLインジェクションの定義だけでなく、問題文中の条件がどの選択肢に当てはまるかを確認する。
  • 関連タグ: 攻撃手法。

選択肢

  1. URLをWebページに出力するときは,"http://"や"https://"で始まるURLだけを許可する。
  2. 外部からのパラメタでWebサーバ内のファイル名を直接指定しない。
  3. スタイルシートを任意のWebサイトから取り込めるようにしない。
  4. プレースホルダを使って命令文を組み立てる。正解

正解

: プレースホルダを使って命令文を組み立てる。

解説

SQL インジェクション対策の本命は、SQL 文の組立てにプレースホルダ(バインド変数)を用いて入力値をデータとして扱わせる方法です。エが正解。

なぜ他の選択肢が違うのか

  • URL スキーム制限はオープンリダイレクトや XSS 対策で、SQL インジェクション対策ではありません。

  • ファイル名の直接指定回避はパストラバーサル対策で、SQL インジェクションとは別です。

  • スタイルシートの取り込み制限は XSS/CSP の話で、SQL インジェクション対策ではありません。

  • エ(正解)

    プレースホルダによる SQL 文構築、SQL インジェクションの最も有効な対策で正解です。

解き方の整理

SQLインジェクションの問題では、選択肢のキーワードだけで判断せず、問題文が示す条件と正解選択肢の説明が一致しているかを見ます。誤答選択肢は、似た用語を混ぜる、主体を入れ替える、目的や範囲を広げすぎる、という形で作られることが多いため、選択肢別解説まで確認しておくと復習効率が上がります。

関連問題

前後の問題

復習を続ける

間違えた問題、苦手タグ、模試履歴を保存して復習する導線を用意しています。広告なしPro、弱点分析、復習リマインダーは段階的に提供予定です。