基本情報

基本情報 平成27年度 秋期 問42|テクノロジ系に関する問題

問題

基本情報 | 平成27年度 秋期 | 分野:テクノロジ系

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

キーボード:1〜4で選択・Enterで次へ

タップするとすぐ答え合わせ

答え合わせ

正解は A
  • A
  • B
  • C
  • D

自信の3択

えらぶと、この端末に記録します(登録はいりません)

解説

答えは a「特別な意味の文字を、ただの文字として扱う」です。

SQLインジェクションは「攻撃者が入力欄にSQLの命令を書き込んで、データベースを乗っ取る」攻撃。

たとえば「`' OR 1=1 --`」と入力すると、データベースが命令と勘違いして全データを返してしまう…。

対策は、入力中の `'` や `--` を“ただの文字”として扱うように加工することです(エスケープ/プリペアドステートメント)。

👉 覚え方:「危ない文字をムリヤリ無害化」。

ほかの選択肢:b HTMLタグ置換=XSS対策/c 「../」を弾く=ディレクトリトラバーサル対策/d 長さ制限=バッファオーバーフロー対策。攻撃と対策がそれぞれ違います。

なぜこれが正解か

正解は a。SQLインジェクションは入力値中の特殊文字(`'`、`;`、`--` 等)がSQL構文の一部として解釈されることで発生する。対策は (1) プレースホルダ(プリペアドステートメント)の使用:データと命令を分離、(2) エスケープ処理:特殊文字を文字列扱いに変換、(3) 入力値検証:想定外データの拒否、(4) 最小権限のDB接続ユーザ。設問aは(1)(2)の根本対策に該当。

各選択肢の解説

  • b 誤り:HTMLタグの無害化はXSS(クロスサイトスクリプティング)対策。
  • c 誤り:`../` の遮断はディレクトリトラバーサル攻撃対策。
  • d 誤り:入力長制限はバッファオーバーフロー攻撃対策の補助。SQLインジェクションには無効(短い攻撃文字列も可能)。

覚え方・ひっかけ注意

「攻撃→対策」のセット暗記:SQLi→エスケープ/プレースホルダ、XSS→HTMLエスケープ/CSP、CSRF→トークン、ディレクトリトラバーサル→入力検証、バッファオーバーフロー→境界チェック。設問の選択肢配置は典型ひっかけパターンなので、対策技術の用途を即答できるよう訓練する。

理論的背景

SQLインジェクション(CWE-89)はOWASP Top 10で常時上位(2021版ではA03: Injection)の脆弱性。攻撃手法は (1) 古典型(`' OR '1'='1`)、(2) UNION型(別テーブルのデータ取得)、(3) ブラインド型(応答の真偽から1bitずつ推測)、(4) 時間ベース型(`SLEEP()` で遅延確認)、(5) 二次注入(保存→後段で実行)等。攻撃ツールはSQLMapが代表。

実務での使われ方

対策の優先順位:

1. プリペアドステートメント/バインド変数(JDBC `PreparedStatement`、PHP PDO `prepare()`、Pythonの `cursor.execute(sql, params)`):根本対策

2. ORM(Object-Relational Mapping)の利用:Hibernate、SQLAlchemy等は内部でバインド変数化

3. 入力値検証(ホワイトリスト方式):想定形式以外を拒否

4. WAF(Web Application Firewall):シグネチャベース/機械学習ベース検知

5. 最小権限のDB接続ユーザ:DROP TABLE等の管理権限を持たせない

6. エラーメッセージの抽象化:DB構造の漏えい防止

試験での位置づけ

情報セキュリティ分野の最頻出脆弱性。基本情報・応用情報・情報処理安全確保支援士で毎期出題。OWASP Top 10、CWE/SANS Top 25、CVSS(共通脆弱性評価システム)と併せて理解。最近はGraphQL Injection、NoSQL Injection(MongoDB等)も出題される。

選択肢の発展補足

  • XSS(b):DOM-based/Stored/Reflectedの3型。CSP(Content Security Policy)でinline script制限が現代的対策。
  • ディレクトリトラバーサル(c):パストラバーサルとも。`canonicalize` &ベースディレクトリ比較が定石。
  • バッファオーバーフロー(d):C/C++特有の問題。ASLR・DEP・スタックカナリア・SafeSEHが緩和策。Rust・Goは言語レベルで予防。
この問題の根拠出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成27年度 秋期 問42
訂正の記録この問題の訂正はありません(サイト全体の記録)
出典と作り方

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成27年度 秋期 問42/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビ独自の3段階の解説(初級・標準・上級)です。