令和5年度 問7|セキュア開発・IoT・脆弱性評価(CVSS・CVE・診断)
Web アプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはどれか。
正解:イ SQL インジェクションを防ぐために,Web アプリケーション内でデータベースへの問合せを作成する際にプレースホルダを使用する。
ポイント
脆弱性の名前と、その対策の組合せが合う記述を選ぶ問題です。
考え方と解き方
脆弱性ごとに、対策の中身が決まっています。対策の名前から、どの脆弱性への対策かを考えます。プレースホルダは SQL 文の組立て、エスケープは出力、乱数はセッション ID、シェルの起動はコマンドの実行に関わります。
- SQL インジェクションの根本的解決は、データベースへの問合せの組立てにプレースホルダを使うことです。イは、脆弱性と対策が合っています。
- ほかの3つは、脆弱性と対策の組合せがずれています。したがって、最も適切なのは イ です。
ほかの選択肢
- ア 推測困難な乱数をセッション ID に使うのは、セッション管理の不備への対策です。OS コマンドインジェクションの対策ではありません。
- ウ ファイルを外部から直接参照できないようにする対策は、クロスサイトスクリプティングの対策ではありません。この対策の根本的解決は、出力のエスケープです。
- エ シェルを起動できないようにするのは、OS コマンドインジェクションの対策です。セッションハイジャックの対策ではありません。
覚えておくこと
- SQLインジェクション対策:根本的解決はプレースホルダ。保険的対策はエラー非表示、DB権限の最小化
- クロスサイトスクリプティング対策:根本的解決は出力のエスケープ。入力値チェックは保険的対策
- 他の対策:セッションIDは推測困難にする。OSコマンドインジェクションはシェルを起動させない
(テーマ・覚えること)
出典:令和5年度 情報セキュリティマネジメント試験 公開問題 科目A 問7