基本情報

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

問題

基本情報 | 2022 サンプル問題 | 分野:テクノロジ系

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

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

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

答え合わせ

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

自信の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
訂正の記録この問題の訂正はありません(サイト全体の記録)
出典と作り方

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