【ASP.NET MVC】 Html.AntiForgeryToken() / ValidateAntiForgeryToken

■目的

 * CSRFCross-Site Request Forgeries:クロスサイト・リクエスト・フォージェリ;リクエスト強要)攻撃を
   防ぐために使用
CSRFの詳細について、以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/35715431.html

■使用方法

[1] 対象となるビュー・スクリプトにHtml.AntiForgeryTokenメソッドを埋め込む。
~~~
@Html.AntiForgeryToken()
~~~

[2] コントローラ側のアクションにValidateAntiForgeryToken属性を付与する
~~~
<ValidateAntiForgeryToken()> _
Function Xxxx(ByVal model As XxxModel) As ActionResult
  ' ・・・中略・・・
End Function
~~~

補足1:しくみについて

 1) Html.AntiForgeryTokenメソッドは、隠しフィールドを出力するとともに、
  「__RequestVerificationToken_Lw__」のような名前のクッキーを発行する
   (「ワンタイム・トークン」と呼んでいる)
~~~
<input name="__RequestVerificationToken" type="hidden"
 value="tJVYeJUMiD8s9HmKuzFESe4qHadxDC0HxD/wezi2kgK+cy/jVfzKJhEJy" />
~~~

 2) ポスト時に、データと共にトークンをサーバ側に送信する
 3) アクション・メソッド側で、このトークンの存在をチェックして、
    入力元のページが妥当であるかどうかを判断する

Ajax通信での使用

 * 以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/35813912.html



関連記事

クロス・サイト・リクエスト・フォージェリ(CSRF/ Cross Site Request Forgeries)

http://blogs.yahoo.co.jp/dk521123/35715431.html

ASP.NET MVCAjax通信時にValidateAntiForgeryToken を使用する [1]

http://blogs.yahoo.co.jp/dk521123/35813912.html

ASP.NET MVCでknockout.js を使った際に ValidateAntiForgeryToken を使用する [1] ~試作版~

http://blogs.yahoo.co.jp/dk521123/35841982.html