ホーム > 情報処理安全確保支援士試験 > 2021年 春期
情報処理安全確保支援士試験 2021年 春期 午前2 問12
安全な Web アプリケーションの作り方について攻撃と対策の適切な組合せはどれか。

ア:(正解)
イ:
ウ:
エ:
解説
安全な Web アプリケーションの作り方について攻撃と対策の適切な組合せ【午前2 解説】
要点まとめ
- 結論:SQLインジェクションの対策には、SQL文の組立てに静的プレースホルダを使用することが正しい。
- 根拠:プレースホルダを使うことで、ユーザ入力がSQL文の構造に影響を与えず、不正なSQL実行を防止できるため。
- 差がつくポイント:攻撃手法ごとに適切な対策を理解し、誤った対策を選ばないことが重要である。
正解の理由
SQLインジェクションは、ユーザ入力を直接SQL文に組み込むことで不正なSQLを実行される攻撃です。これを防ぐには、SQL文の組立てに静的プレースホルダ(パラメータ化クエリ)を使い、入力値をSQL文の構造から分離することが最も効果的です。これにより、入力値がSQL文の一部として解釈されず、攻撃を防止できます。
他の選択肢は攻撃と対策の組み合わせが誤っており、正しい防御策とは言えません。
他の選択肢は攻撃と対策の組み合わせが誤っており、正しい防御策とは言えません。
よくある誤解
クロスサイトスクリプティング(XSS)対策に外部スタイルシートを許可することや、CSRF対策にGETメソッドを使うことは誤りです。セッションハイジャック対策で固定のセッションIDを使うのも逆効果です。
解法ステップ
- 各攻撃手法の特徴を理解する(SQLインジェクション、XSS、CSRF、セッションハイジャック)。
- それぞれの攻撃に対して一般的に推奨される対策を確認する。
- 選択肢の対策内容が攻撃手法に適合しているかを検証する。
- 正しい組み合わせを選択する。
選択肢別の誤答解説
- ア:SQLインジェクションに対し、静的プレースホルダを使う対策は正しい。
- イ:クロスサイトスクリプティング対策に「任意の外部サイトのスタイルシートを取り込めるようにする」は誤り。XSS対策は入力値のエスケープやコンテンツセキュリティポリシーの設定が基本。
- ウ:クロスサイトリクエストフォージェリ対策に「リクエストにGETメソッドを使用する」は誤り。むしろGETは副作用のない操作に使い、CSRFトークンの利用が有効。
- エ:セッションハイジャック対策に「利用者ごとに固定のセッションIDを使用する」は誤り。セッションIDは都度生成し、盗難防止策を講じる必要がある。
補足コラム
SQLインジェクションは最も古典的かつ危険な攻撃の一つで、パラメータ化クエリやプリペアドステートメントの利用が標準的な防御策です。XSSはスクリプトの不正挿入を防ぐために、入力値の適切なエスケープやCSP(Content Security Policy)が有効です。CSRFはトークンを用いた検証で防ぎ、セッションハイジャックはセッションIDの管理とHTTPSの利用が重要です。
FAQ
Q: SQLインジェクション対策でなぜプレースホルダが有効なのですか?
A: プレースホルダはSQL文の構造と入力値を分離し、入力値がSQL文として解釈されるのを防ぐためです。
A: プレースホルダはSQL文の構造と入力値を分離し、入力値がSQL文として解釈されるのを防ぐためです。
Q: クロスサイトリクエストフォージェリ(CSRF)対策にGETメソッドを使うのはなぜ誤りですか?
A: GETメソッドは副作用のない操作に使うべきで、CSRF対策にはトークンの検証が必要です。
A: GETメソッドは副作用のない操作に使うべきで、CSRF対策にはトークンの検証が必要です。
Q: セッションハイジャック対策で固定のセッションIDを使うのはなぜ危険ですか?
A: 固定IDは盗まれた場合に乗っ取りが容易になるため、都度生成し管理する必要があります。
A: 固定IDは盗まれた場合に乗っ取りが容易になるため、都度生成し管理する必要があります。
関連キーワード: SQLインジェクション, プレースホルダ, クロスサイトスクリプティング, CSRF, セッションハイジャック, Webセキュリティ, パラメータ化クエリ