ホーム > システムアーキテクト試験 > 2018年
システムアーキテクト試験 2018年 午前2 問25
Webアプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち、適切なものはどれか。
ア:OSコマンドインジェクションを防ぐために、Webアプリケーションが発行するセッションIDに推測困難な乱数を使用する。
ウ:クロスサイトスクリプティングを防ぐために、Webサーバ内のファイルを外部から直接参照できないようにする。
エ:セッションハイジャックを防ぐために、Webアプリケーションからシェルを起動できないようにする。
イ:SQLインジェクションを防ぐために、Webアプリケーション内でデータベースへの問合せを作成する際にプレースホルダを使用する。(正解)
解説
Webアプリケーションにおけるセキュリティ上の脅威とその対策【午前2 解説】
要点まとめ
- 結論:SQLインジェクション対策にはプレースホルダの使用が効果的です。
- 根拠:プレースホルダはSQL文とデータを分離し、不正なSQLコードの挿入を防ぎます。
- 差がつくポイント:脅威ごとに適切な対策を理解し、混同しないことが重要です。
正解の理由
選択肢イは「SQLインジェクションを防ぐためにプレースホルダを使用する」と述べています。SQLインジェクションは、ユーザ入力を直接SQL文に埋め込むことで不正なSQLを実行される攻撃です。プレースホルダを使うと、SQL文の構造とデータが分離され、入力値がSQL文として解釈されなくなるため、攻撃を防げます。これが最も適切な対策です。
よくある誤解
セッションIDの乱数化はセッションハイジャック対策であり、OSコマンドインジェクション対策ではありません。ファイル参照制限はクロスサイトスクリプティング対策には直接関係しません。
解法ステップ
- 各選択肢の脅威を正確に理解する。
- それぞれの脅威に対する代表的な対策を思い出す。
- プレースホルダがSQLインジェクション対策であることを確認する。
- 他の選択肢の対策が脅威に合致していないことを検証する。
- 最も適切な選択肢を選ぶ。
選択肢別の誤答解説
- ア: OSコマンドインジェクション対策は入力値の検証やコマンドの直接実行回避であり、セッションIDの乱数化は無関係です。
- イ: SQLインジェクション対策としてプレースホルダを使うのは正しい。
- ウ: クロスサイトスクリプティング(XSS)は主に入力値のエスケープやサニタイズで防ぎ、ファイル参照制限は効果的ではありません。
- エ: セッションハイジャック対策はセッション管理の強化やHTTPS利用であり、シェル起動制限は関係ありません。
補足コラム
SQLインジェクションはWebアプリケーションの脆弱性の中でも特に危険で、攻撃者がデータベースの情報を盗んだり改ざんしたりする恐れがあります。プレースホルダはパラメータ化クエリとも呼ばれ、ほとんどのデータベースアクセスライブラリでサポートされています。XSS対策には入力値のエスケープやContent Security Policy(CSP)の導入も有効です。
FAQ
Q: プレースホルダはどのようにSQLインジェクションを防ぐのですか?
A: プレースホルダはSQL文の構造とデータを分離し、ユーザ入力がSQL文として解釈されるのを防ぎます。
A: プレースホルダはSQL文の構造とデータを分離し、ユーザ入力がSQL文として解釈されるのを防ぎます。
Q: クロスサイトスクリプティングの主な対策は何ですか?
A: ユーザ入力のエスケープやサニタイズ、Content Security Policyの設定が効果的です。
A: ユーザ入力のエスケープやサニタイズ、Content Security Policyの設定が効果的です。
関連キーワード: SQLインジェクション, プレースホルダ, クロスサイトスクリプティング, セッションハイジャック, OSコマンドインジェクション, Webアプリケーションセキュリティ