2022 サンプル問題36テクノロジ系

基本情報 2022 サンプル問題 問36:テクノロジ系に関する問題

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

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

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

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

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

答えは a です。

SQLインジェクションは、Webサイトの入力欄に「データベースの命令文(SQL)」を仕込んで、本来見えないはずのデータを盗んだり消したりする攻撃。

たとえば名前欄に「'; DROP TABLE users; --」みたいな文を入れて、「これは命令だ」とDBに勘違いさせるイメージ。

対策は 「入力された文字を“ただの文字”として扱う」 こと(プレースホルダ/エスケープ)。命令と勘違いさせなければ攻撃は成立しません。

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

ほかの選択肢:b はXSS(クロスサイトスクリプティング)対策/c はディレクトリトラバーサル対策/d は単なる長さ制限。

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

なぜこれが正解か

正解は a。SQLインジェクションは、ユーザ入力をSQL文字列に連結する際、シングルクォート・セミコロン・コメント記号など特別な意味を持つ文字がSQLパーサに解釈されることで発生する。対策は入力を データ(リテラル) として扱わせること。具体的にはプレースホルダ(バインド変数)+プリペアドステートメント、または適切なエスケープ処理。

各選択肢の解説

  • a:特別な意味を持たせない処理=SQLi対策の本質。正解。
  • b:HTMLタグを無害化=XSS 対策(クロスサイトスクリプティング)。
  • c:「../」のチェック=ディレクトリトラバーサル 対策。
  • d:入力長制限=バッファオーバフロー等の補助策で、SQLi本質対策ではない。

覚え方・ひっかけ注意

「入力⇒データ扱い = SQLi」「入力⇒HTML扱い = XSS」「../チェック = パス操作」 の3点セットで暗記。WAF(Web Application Firewall)は補助、根本対策はプレースホルダ。OWASP Top 10で常連の脆弱性。

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

理論的背景・攻撃分類

SQLi は注入方式で (1) インバンド型(Error-based、Union-based):直接結果取得、(2) ブラインド型(Boolean-based、Time-based):応答差分や遅延でビット単位推測、(3) アウトオブバンド型:DNS/HTTP外送で情報抽出、に分類。第二段(Second-Order)SQLiはDB保存値が後続クエリで連結され発火するため、保存時/取り出し時の両方を考慮する必要がある。

根本対策の実装

プリペアドステートメント+パラメータバインド が第一選択。JDBC `PreparedStatement.setString()`、PHP PDO `prepare()/bindValue()`、Pythonの `psycopg2.execute(sql, params)`、Node.js `pg` の `$1` プレースホルダ。ORMは内部でバインドするが、`raw()` や動的なテーブル名・カラム名注入は別途許可リスト検証必須。LIKE句の `%`・`_` も別途エスケープ。

最小権限:アプリ用DBユーザはSELECT/INSERT/UPDATEのみ、DDLや他スキーマアクセスを禁止する。攻撃成功時の被害範囲を限定する深層防御。

関連規格・実務

OWASP ASVS V5、CWE-89、PCI-DSS要件6.5.1、IPA「安全なウェブサイトの作り方」で根本対策・保険的対策(WAF、エラー詳細非表示、ログ監査)が明示。WAFはModSecurity/Cloud WAFのシグネチャ+アノマリスコアリングで補助。RASP(Runtime Application Self-Protection)はDBドライバ層でクエリ意図と入力を照合する次世代対策。

試験での位置づけ

基本情報ではSQLi/XSS/CSRF/ディレクトリトラバーサル/OSコマンドインジェクションの 対策と攻撃の対応付け が定番。応用情報・支援士では具体的なSQLペイロード(`' OR '1'='1`)の解読、Time-based検出、サンプルコード添削まで問われる。

選択肢の発展補足

b のXSSはストアド/リフレクテッド/DOMベースに細分、対策は出力時エスケープ+CSP(Content Security Policy)+HttpOnly Cookie。c のパストラバーサルはOSパス正規化+ホワイトリストが本質で、文字列除去は迂回されやすい。

出典・引用について

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 2022 サンプル問題36/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

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

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

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

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