V−30
Webアプリケーションに対する攻撃の1つに、クロスサイトリクエストフォージェリ (CSRF) がある。これは、別のサイトに用意したコンテンツ上の罠のリンクを踏ませること等をきっかけとして、インターネットショッピングの最終決済や退会等Webアプリケーションの重要な処理を呼び出すようユーザを誘導する攻撃である。この攻撃への対策として、最も適切なものはどれか。
@ HTMLを出力する際に、要素や属性値を表現するときに使われる特殊文字を、エスケープする。
A SQL文を組み立てる際に、プレースホルダを用いる。
B 他者が推定困難なランダム値 (トークン) をhiddenフィールドとして埋め込んでおき、フォームデータを処理する際に、フォームデータ内にその値が含まれていることを確認する。
C 別のファイルを開く際に与えるパラメータについて、文字種を英数字のみ等の安全なものに限定する。
D ユーザの認証に成功した時点で新しいセッションIDを発行し、それまでのセッションIDを無効にする。
正解
B
解説
@ クロスサイトスクリプティングへの対策である。クロスサイトスクリプティング (Cross Site Scripting = XSS) は、Webアプリケーションにスクリプトを埋め込むことが可能な脆弱性がある場合、その脆弱性を悪用して不正なスクリプトを利用者ブラウザ上で実行する攻撃である。
A SQLインジェクションへの対策である。SQLインジェクションは、SQLに不正に論理式などを組込んで、プログラムが想定していないSQLを実行させることで、データベースを改ざんしたり、不正に情報を入手する攻撃のことである。
B 正しい。Webアプリケーションの管理者は、他者が推定困難なランダム値を hiddenフィールドとして埋め込んでおき、フォームデータを処理する際に、フォームデータ内にその値が含まれていることを確認する。
C コマンド注入攻撃に対する対策である。コマンド注入攻撃は、被害者が想定していないパラメータを渡すことで、悪意のあるコマンドを実行させる攻撃のことである。
D セッションIDの乗っ取り、特に「セッションIDお膳立て」への対策である。セッションIDお膳立ては、攻撃者が有効なセッションIDを用意し、被害者に使わせてセッションを乗っ取ることである。