平成30年度 秋期41テクノロジ系

基本情報 平成30年度 秋期 問41:テクノロジ系に関する問題

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

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

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

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは a です。

SQLインジェクションは、入力欄に「悪意のある命令文」を仕込んで、データベースを不正操作する攻撃です。例えば検索欄に変な記号を入れて、本来見せないデータを盗まれる感じ。

防ぎ方は「入れられた文字を“命令”として読まないようにする」こと。お店で「お名前」を聞かれた時、`'); 全データ消して --` と書いても、ちゃんと「人の名前」として処理してくれれば安全、というイメージ。

👉 覚え方:入力を“命令”じゃなく“ただの文字”として扱う。

ほかの選択肢:b はXSS対策/c はパストラバーサル対策/d は単なる長さ制限。

標準試験対策の基準レベル

なぜこれが正解か

正解は aSQLインジェクションは、ユーザ入力中の `'`, `;`, `--`, `OR 1=1` 等の特殊文字を含む文字列をSQL文の一部として実行させる攻撃。対策の本質は入力文字を特別な意味として解釈させないこと。具体的にはプレースホルダ(プリペアドステートメント)でSQL構文とデータを分離し、エスケープを自動化する。

各選択肢の解説

  • b:HTMLタグのエスケープはXSS(クロスサイトスクリプティング)対策。
  • c:`../` のチェックはパストラバーサル(ディレクトリトラバーサル)対策。
  • d:入力長制限は補助的なバリデーションだが、SQLインジェクション本質対策ではない。

覚え方・ひっかけ注意

入力を文字列として扱う=バインド変数/プレースホルダ」がキーワード。各選択肢は別種の脆弱性対策と1対1で対応する(a:SQLi/b:XSS/c:パストラバーサル/d:DoS緩和)と整理すれば暗記不要。

上級誤答論破・背景理論まで深掘り

理論的背景

SQLインジェクションはOWASP Top 10で長年常連の脆弱性(最新版ではInjectionカテゴリに統合)。攻撃手法は①インバンド型(UNION SELECT、エラーベース)②ブラインド型(Boolean/Time-based)③アウトオブバンド型(DNS/HTTP外部送信)に分類。最近はSecond-Order Injection(DB保存後、別経路で実行される)も注目される。

対策の実装

  • プリペアドステートメント/パラメータ化クエリ:JDBC `PreparedStatement`、PHP PDO `prepare()/execute()`、Python `cursor.execute(sql, params)`。最も確実。
  • ORM:SQLAlchemy、ActiveRecord、Entity Frameworkは自動的にパラメータ化。ただし生SQL断片を渡すと無効化される。
  • 入力検証:ホワイトリスト方式(許可文字のみ通す)。ブラックリスト(特殊文字除去)は迂回容易で非推奨。
  • 最小権限:DBユーザに不要なDROP/CREATE権限を与えない。
  • WAF:ModSecurity、AWS WAFのSQLi rule set。多層防御の一翼。
  • エスケープ関数の単独使用は危険:文字コードや方言差で迂回される(例:`mysql_real_escape_string` のShift_JIS問題)。

試験での位置づけ

基本情報のセキュリティ分野で毎期必出級。応用情報・情報処理安全確保支援士では具体的なSQL文例(`' OR '1'='1` 等)や対策コード、CWE-89分類まで踏み込む。

選択肢の発展補足

XSS対策はコンテキスト別エスケープ(HTML/JS/CSS/URLそれぞれ)+Content Security Policy。パストラバーサルはファイル名正規化+chroot/ jail。SQLi対策と混同せず、それぞれ独立した防御層を組むのがセキュアコーディングの基本。

出典・引用について

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成30年度 秋期41/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

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

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

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

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