CSRF预防机制如何验证令牌?

时间:2014-07-06 06:35:35

标签: c# asp.net asp.net-mvc cookies csrf

我在名为Action methods的控制器中跟随Default1

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult testing()
        {

            return View();
        }

        public ActionResult testing1()
        {

            return View();
        }

他们对应的Views是:

testing1.cshtml

@{
    ViewBag.Title = "testing1";
}

<h2>testing1</h2>

<form action="/Default1/testing" method="post">
    @Html.AntiForgeryToken()
    <input type="submit" value="submit"/>
</form>

testing.cshtml

@{
    ViewBag.Title = "testing";
}

<h2>testing</h2>

<h1>successfully validated cookie</h1>

首先,我访问设置/Default1/testing1 Cookie的HttpOnly。对此请求的响应具有隐藏字段,该字段具有令牌。这是隐藏的输入字段。

<input name="__RequestVerificationToken" type="hidden" value="qgahCspc_DQBSQTkFR5_NmPDGygciZPNxt7BmqZE9NpmVzrbbo1N43T3RDjJvrMUmsq4MT5vUqvvQF4SCrSQXnQpKB9THGNA5hVcVu6exIQ1">

以下是response header的屏幕截图,可以在红色圆圈中看到Http cookie。

enter image description here

我认为首先设置了HttpOnly,并且在帖子请求value from hidden field&amp;如果两者相等,则比较value of HttpOnly Cookie,然后我们被认为是有效的。但是可以看出这两个值都不同。这个机制正在运作。问题是怎么样的?这些值中的一个是加密的,在比较之前解密。

0 个答案:

没有答案