Webアプリケーションに対する攻撃の1つに,リクエスト強要(Cross-siteRequestForgery)がある。これは,別のサイトに用意したコンテンツ上の民のリンクを踏ませること等をきっかけとして,インターネットショッピングの最終決済や退会等Webアプリケーションの重要な処理を呼び出すようユーザを誘導する攻撃である。この攻撃への対策として,最も適切なものはどれか。
① 他者が推定困難なランダム値をhiddenフィールドとして埋め込んでおき,フォームデータを処理する際に,フォームデータ内にその値が含まれていることを確認する。
② プログラム中のデータをHTMLドキュメントに出力する際に,タグや属性値を表現する特殊文字について,HTMLエンティティを表現する記法に置換する。
③ 別のプログラムを呼び出す際に与えるパラメータについて,文字種を英数字のみ等の安全なものに限定し,検査してから渡す。
④ 文字列連結演算を用いてSQL文の途中へ値を埋め込む際に,特殊記号の効力を打ち消すよう,エスケープ処理を実施する。
⑤ ユーザがログインに成功した時点でまったく新しいセッションIDを発行し,それまでのセッションIDを無効にする。
答え
①
解説
XXX
① 他者が推定困難なランダム値をhiddenフィールドとして埋め込んでおき,フォームデータを処理する際に,フォームデータ内にその値が含まれていることを確認する。
XXX
② プログラム中のデータをHTMLドキュメントに出力する際に,タグや属性値を表現する特殊文字について,HTMLエンティティを表現する記法に置換する。
XXX
③ 別のプログラムを呼び出す際に与えるパラメータについて,文字種を英数字のみ等の安全なものに限定し,検査してから渡す。
XXX
④ 文字列連結演算を用いてSQL文の途中へ値を埋め込む際に,特殊記号の効力を打ち消すよう,エスケープ処理を実施する。
XXX
⑤ ユーザがログインに成功した時点でまったく新しいセッションIDを発行し,それまでのセッションIDを無効にする。
XXX