QA@IT

MVC AntiForgeryTokenの値を知る方法もしくは保持のやり方について

6774 PV

ASP.net MVCで開発しております。

Viewに生成されたAntiForgeryTokenの値を知る方法もしくは保持する方法はあるのでしょうか。

View(nshtml)に
@using (Html.BeginForm("Create", "Account", FormMethod.Post, new { @class = "form-horizontal" }))
{
@Html.AntiForgeryToken()
}
と記載して、生成された値をサーバー側で知りたいのですが可能なのでしょうか。

ご教示願います。

  • 目的は何ですか? CSRF のヒントになる話なので気になるのですが。 -

回答

ネット上に公開されている Mocrosoft の記事を紹介しておきます。

XSRF/CSRF Prevention in ASP.NET MVC and Web Pages
https://docs.microsoft.com/en-us/aspnet/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages

その記事の「Generating the tokens」セクション、「Validating the tokens」あたりを読んでください。

質問者さんの言う AntiForgeryToken というのが何だか不明ですが、記事に "The incoming session token and field token are read and the anti-XSRF token extracted from each." と書いてあるように、session token(Cookie に含まれる)、field token(隠しフィールドの value 属性に設定される)という 2 つのトークンがあって、さらにそれらの中に anti-XSRF token が含まれるそうです。

session token と field token については、前者は上に紹介した記事にあるように F12 開発者ツールを使うとか Fiddler でヘッダを見ることによって、後者は html ソースを開いて見ることによって分かります。

anti-XSRF token の取得方法は不明です。でも、一般プログラマが知る必要はなさそうです。

編集 履歴 (0)
  • SurferOnWwwさん
    レスありがとうございます。

    違う検討方法にいたしましたので、一旦解決とさせていただきます。
    -

SurferOnWwwさん
レスありがとうございます。

F12で確認てきる等は知っております。

この値をViewを返す前にサーバ処理時に保持しておきたいのですができないでしょうか。

編集 履歴 (0)
  • 前にも聞いてますがその目的は何ですか? あと、質問者さんは回答欄ではなく回答のコメント欄に書いてください。 -
  • それから、知っていることは後出ししないで最初に書いておいてください。回答者に余計な手間をかけさせないようお願いします。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。