Webアプリケーションに対する攻撃の1つに、リクエスト強要 (Cross-site Request Forgery) がある。 これは、別のサイトに用意したコンテンツ上の罠のリンクを踏ませること等をきっかけとして、インターネットショッピングの最終決済や退会等Webアプリケーションの重要な処理を呼び出すようユーザを誘導する攻撃である。この攻撃への対策として、最も適切なものはどれか。
@ 他者が推定困難なランダム値を hiddenフィールドとして埋め込んでおき、フォームデータを処理する際に、フォームデータ内にその値が含まれていることを確認する。
A プログラム中のデータをHTMLドキュメントに出力する際に、タグや属性値を表現する特殊文字について、HTMLエンティティを表現する記法に置換する。
B 別のプログラムを呼び出す際に与えるパラメータについて、文字種を英数字のみ等の安全なものに限定し、検査してから渡す。
C 文字列連結演算を用いてSQL文の途中へ値を埋め込む際に、特殊記号の効力を打ち消すよう、エスケープ処理を実施する。
D ユーザがログインに成功した時点でまったく新しいセッションIDを発行し、それまでのセッションIDを無効にする。
@
リクエスト強要は、CSRF (Cross site request forgeries = シーサーフ) や、セッションライディング (Session Riding) とも呼ばれる。ユーザーはこうした被害に遭わないように、必要な手続きが完了すれば、速やかにログアウトすることが望ましい。
@ 正しい。Webアプリケーションの管理者は、他者が推定困難なランダム値を hiddenフィールドとして埋め込んでおき、フォームデータを処理する際に、フォームデータ内にその値が含まれていることを確認する。
A クロスサイトスクリプティングへの対策である。クロスサイトスクリプティング (Cross Site Scripting = XSS) は、Webアプリケーションにスクリプトを埋め込むことが可能な脆弱性がある場合、その脆弱性を悪用して不正なスクリプトを利用者ブラウザ上で実行する攻撃である。
なお、HTMLエンティティは、ブラウザがHTMLを表示する際の "<" や "!" などの特殊記号を表示するためのもので例えば
"<" は、< で表す。文字実体参照とも言う。
B コマンド注入攻撃に対する対策である。コマンド注入攻撃は、被害者が想定していないパラメータを渡すことで、悪意のあるコマンドを実行させる攻撃のことである。
C SQLインジェクションへの対策である。SQLインジェクションは、SQLに不正に論理式などを組込んで、プログラムが想定していないSQLを実行させることで、データベースを改ざんしたり、不正に情報を入手する攻撃のことである。
D セッションIDの乗っ取り、特に「セッションIDお膳立て」への対策である。セッションIDお膳立ては、攻撃者が有効なセッションIDを用意し、被害者に使わせてセッションを乗っ取ることである。
V−30 | 目次 | V−32 |