ホーム > システムアーキテクト試験 > 2016年
システムアーキテクト試験 2016年 午前2 問24
安全なWebアプリケーションの作り方について、攻撃と対策の適切な組合せはどれか。

エ:
ア:(正解)
イ:
ウ:
解説
安全なWebアプリケーションの作り方について、攻撃と対策の適切な組合せはどれか【午前2 解説】
要点まとめ
- 結論:SQLインジェクションには静的プレースホルダを使ったSQL文の組立てが有効な対策です。
- 根拠:動的にSQL文を組み立てると悪意ある入力がSQL文に混入しやすく、静的プレースホルダはこれを防ぎます。
- 差がつくポイント:攻撃の特徴と対策の具体的な技術的手法を正確に理解し、誤った対策を選ばないことが重要です。
正解の理由
SQLインジェクションは、ユーザ入力を直接SQL文に組み込むことで不正なSQLが実行される攻撃です。静的プレースホルダ(プリペアドステートメント)を使うと、SQL文の構造とデータ部分が分離され、悪意ある入力がSQL文として解釈されなくなります。これにより、SQLインジェクションを効果的に防止できます。
よくある誤解
クロスサイトスクリプティング(XSS)やクロスサイトリクエストフォージェリ(CSRF)など他の攻撃と対策を混同しやすい点に注意が必要です。対策は攻撃の種類に応じて適切に選ぶことが重要です。
解法ステップ
- 各攻撃の特徴を理解する(SQLインジェクション、XSS、CSRF、セッションハイジャック)。
- それぞれの攻撃に対して一般的に推奨される対策を確認する。
- 選択肢の対策が攻撃の防止に適切かどうかを検証する。
- 不適切な対策を除外し、正しい組合せを選ぶ。
選択肢別の誤答解説
- ア SQLインジェクション:静的プレースホルダを使う対策は正しい。
- イ クロスサイトスクリプティング:外部サイトのスタイルシートを取り込むことは対策にならず、むしろ危険。XSS対策は入力のエスケープやコンテンツセキュリティポリシーの設定が有効。
- ウ クロスサイトリクエストフォージェリ:GETメソッドの使用はCSRF対策にならず、むしろ副作用のある操作はPOSTにすべき。CSRFトークンの利用が正しい対策。
- エ セッションハイジャック:固定のセッションIDはセッション固定攻撃を招くため逆効果。セッションIDは利用者ごとに動的に生成し、適切に管理する必要がある。
補足コラム
SQLインジェクション対策としては、プリペアドステートメントのほかに入力値の検証や最小権限のデータベースアクセスも重要です。XSS対策では、HTMLエスケープやCSP(Content Security Policy)の導入が効果的です。CSRF対策にはトークンの利用やSameSite属性付きクッキーの活用が推奨されます。セッション管理はHTTPSの利用やセッションタイムアウト設定も含めて総合的に行う必要があります。
FAQ
Q: SQLインジェクションはなぜ危険ですか?
A: 攻撃者が不正なSQLを実行し、データの漏洩や改ざん、管理者権限の取得などが可能になるためです。
A: 攻撃者が不正なSQLを実行し、データの漏洩や改ざん、管理者権限の取得などが可能になるためです。
Q: クロスサイトスクリプティングの基本的な対策は何ですか?
A: ユーザ入力のHTMLエスケープやCSPの設定により、悪意あるスクリプトの実行を防ぎます。
A: ユーザ入力のHTMLエスケープやCSPの設定により、悪意あるスクリプトの実行を防ぎます。
Q: セッションハイジャック対策で固定セッションIDはなぜダメですか?
A: 固定IDは攻撃者にセッションを乗っ取られやすくなるため、動的に生成し適切に管理する必要があります。
A: 固定IDは攻撃者にセッションを乗っ取られやすくなるため、動的に生成し適切に管理する必要があります。
関連キーワード: SQLインジェクション, 静的プレースホルダ, クロスサイトスクリプティング, クロスサイトリクエストフォージェリ, セッションハイジャック, Webセキュリティ, プリペアドステートメント, CSRFトークン