応用情報技術者 2014年 春期 午前2 問40
問題文
安全なWebアプリケーションの作り方について、攻撃と対策の適切な組合せはどれか。

選択肢
ア:(正解)
イ:
ウ:
エ:
安全なWebアプリケーションの作り方について【午前2 解説】
要点まとめ
- 結論:SQLインジェクション対策には静的プレースホルダの使用が最も効果的です。
- 根拠:静的プレースホルダはSQL文とデータを分離し、不正なSQLコードの挿入を防ぎます。
- 差がつくポイント:攻撃手法ごとに適切な対策を理解し、誤った対策を選ばないことが重要です。
正解の理由
選択肢アの「SQLインジェクションに対して静的プレースホルダを使用する」は正解です。
SQLインジェクションは、ユーザ入力を直接SQL文に組み込むことで不正な命令を実行される攻撃です。
静的プレースホルダ(プリペアドステートメント)はSQL文の構造を固定し、入力値をパラメータとして扱うため、攻撃を防止できます。
SQLインジェクションは、ユーザ入力を直接SQL文に組み込むことで不正な命令を実行される攻撃です。
静的プレースホルダ(プリペアドステートメント)はSQL文の構造を固定し、入力値をパラメータとして扱うため、攻撃を防止できます。
よくある誤解
クロスサイトスクリプティング(XSS)対策に外部スタイルシートの取り込みは無関係です。
また、CSRF対策にGETメソッドを使うのは逆効果であり、セッションIDは固定ではなく動的に管理すべきです。
また、CSRF対策にGETメソッドを使うのは逆効果であり、セッションIDは固定ではなく動的に管理すべきです。
解法ステップ
- 各攻撃手法の特徴を理解する(SQLインジェクション、XSS、CSRF、セッションハイジャック)。
- それぞれの攻撃に対して一般的に推奨される対策を確認する。
- 選択肢の対策が攻撃の防止に適切かどうかを検証する。
- 不適切な対策を除外し、正しい組み合わせを選ぶ。
選択肢別の誤答解説
- イ:クロスサイトスクリプティング対策に「任意の外部サイトのスタイルシートを取り込む」は無関係であり、むしろ危険です。XSS対策は入力のエスケープやコンテンツセキュリティポリシーの設定が有効です。
- ウ:クロスサイトリクエストフォージェリ対策に「GETメソッドを使用する」は誤りです。CSRF対策にはトークンの利用やPOSTメソッドの活用が推奨されます。
- エ:セッションハイジャック対策に「固定のセッションIDを使用する」は逆効果で、セッションIDは利用者ごとに動的に生成し、定期的に更新する必要があります。
補足コラム
SQLインジェクションはWebアプリケーションの脆弱性の中でも特に危険で、攻撃者がデータベースの情報を不正に取得・改ざんする恐れがあります。
プリペアドステートメントは多くのプログラミング言語やフレームワークでサポートされており、必ず利用すべき基本的な防御策です。
プリペアドステートメントは多くのプログラミング言語やフレームワークでサポートされており、必ず利用すべき基本的な防御策です。
FAQ
Q: SQLインジェクション対策に静的プレースホルダ以外の方法はありますか?
A: はい。入力値の検証やエスケープ処理も有効ですが、静的プレースホルダが最も確実です。
A: はい。入力値の検証やエスケープ処理も有効ですが、静的プレースホルダが最も確実です。
Q: クロスサイトスクリプティングの対策で有効な方法は?
A: ユーザ入力のHTMLエスケープやContent Security Policy(CSP)の設定が効果的です。
A: ユーザ入力のHTMLエスケープやContent Security Policy(CSP)の設定が効果的です。
関連キーワード: SQLインジェクション、静的プレースホルダ、クロスサイトスクリプティング、クロスサイトリクエストフォージェリ、セッションハイジャック、Webセキュリティ、プリペアドステートメント

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

