情報処理安全確保支援士試験 2021年 春期 午前212


安全な Web アプリケーションの作り方について攻撃と対策の適切な組合せはどれか。
選択肢画像
(正解)

解説

安全な Web アプリケーションの作り方について攻撃と対策の適切な組合せ【午前2 解説】

要点まとめ

  • 結論:SQLインジェクションの対策には、SQL文の組立てに静的プレースホルダを使用することが正しい。
  • 根拠:プレースホルダを使うことで、ユーザ入力がSQL文の構造に影響を与えず、不正なSQL実行を防止できるため。
  • 差がつくポイント:攻撃手法ごとに適切な対策を理解し、誤った対策を選ばないことが重要である。

正解の理由

SQLインジェクションは、ユーザ入力を直接SQL文に組み込むことで不正なSQLを実行される攻撃です。これを防ぐには、SQL文の組立てに静的プレースホルダ(パラメータ化クエリ)を使い、入力値をSQL文の構造から分離することが最も効果的です。これにより、入力値がSQL文の一部として解釈されず、攻撃を防止できます。
他の選択肢は攻撃と対策の組み合わせが誤っており、正しい防御策とは言えません。

よくある誤解

クロスサイトスクリプティング(XSS)対策に外部スタイルシートを許可することや、CSRF対策にGETメソッドを使うことは誤りです。セッションハイジャック対策で固定のセッションIDを使うのも逆効果です。

解法ステップ

  1. 各攻撃手法の特徴を理解する(SQLインジェクション、XSS、CSRF、セッションハイジャック)。
  2. それぞれの攻撃に対して一般的に推奨される対策を確認する。
  3. 選択肢の対策内容が攻撃手法に適合しているかを検証する。
  4. 正しい組み合わせを選択する。

選択肢別の誤答解説

  • ア:SQLインジェクションに対し、静的プレースホルダを使う対策は正しい。
  • イ:クロスサイトスクリプティング対策に「任意の外部サイトのスタイルシートを取り込めるようにする」は誤り。XSS対策は入力値のエスケープやコンテンツセキュリティポリシーの設定が基本。
  • ウ:クロスサイトリクエストフォージェリ対策に「リクエストにGETメソッドを使用する」は誤り。むしろGETは副作用のない操作に使い、CSRFトークンの利用が有効。
  • エ:セッションハイジャック対策に「利用者ごとに固定のセッションIDを使用する」は誤り。セッションIDは都度生成し、盗難防止策を講じる必要がある。

補足コラム

SQLインジェクションは最も古典的かつ危険な攻撃の一つで、パラメータ化クエリやプリペアドステートメントの利用が標準的な防御策です。XSSはスクリプトの不正挿入を防ぐために、入力値の適切なエスケープやCSP(Content Security Policy)が有効です。CSRFはトークンを用いた検証で防ぎ、セッションハイジャックはセッションIDの管理とHTTPSの利用が重要です。

FAQ

Q: SQLインジェクション対策でなぜプレースホルダが有効なのですか?
A: プレースホルダはSQL文の構造と入力値を分離し、入力値がSQL文として解釈されるのを防ぐためです。
Q: クロスサイトリクエストフォージェリ(CSRF)対策にGETメソッドを使うのはなぜ誤りですか?
A: GETメソッドは副作用のない操作に使うべきで、CSRF対策にはトークンの検証が必要です。
Q: セッションハイジャック対策で固定のセッションIDを使うのはなぜ危険ですか?
A: 固定IDは盗まれた場合に乗っ取りが容易になるため、都度生成し管理する必要があります。

関連キーワード: SQLインジェクション, プレースホルダ, クロスサイトスクリプティング, CSRF, セッションハイジャック, Webセキュリティ, パラメータ化クエリ
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ