平成27年度 春期42テクノロジ系

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

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

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

AI解説(初心者・標準・上級)

理解度に合わせて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/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

1
テクノロジ系
2
テクノロジ系
3
テクノロジ系
4
テクノロジ系
5
テクノロジ系

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビなら基本情報の過去問を解きながら学べます。