AntiForgery.GetTokens:oldCookieToken参数的目的是什么?

spe*_*der 19 c# asp.net-mvc csrf antiforgerytoken ios

我们在objective-c中编写了一个iOS移动应用程序,它发布了我们的ASP.NET MVC服务器应用程序.在iPhone上,HTTP堆栈(和cookie等)似乎与Safari共享.这让我们对XSRF攻击持开放态度,所以除非我弄错了,否则我们需要使用防伪令牌来保护POST并保护我们的控制器方法ValidateAntiForgeryTokenAttribute.

我将通过说我没有正确理解防伪标记生成和验证的机制来限定这个问题......特别是,在这种情况下使用的术语"随机数"有些神秘.

因为我们不向客户提供HTML @Html.AntiForgeryToken(),所以我们不能使用该标准,因此我们必须使用AntiForgery.GetTokens这些标记获取并将令牌分发给我们的客户.这有一个神秘的第一个参数:oldCookieToken.目前,我只是设置它null,一切似乎工作正常.那么任何人都可以告诉我......将旧令牌提供给令牌生成算法有什么用?如果我们的iOS应用程序只发出一个令牌并重复用于多个帖子,那么这会有问题吗?

Joh*_*ley 22

AntiForgery.GetTokens将尝试重用旧的cookie令牌以进行验证.因此,如果您已经拥有要重用的验证令牌,它将尝试使用它而不是生成新的令牌.如果旧令牌无效,它将生成一个新令牌并改为使用它.

因此,通过nulloldCookieToken有效.它只是告诉GetTokens总是生成一个新的cookie令牌.

  • 注意:如果传入有效的oldCookieToken,则newCookieToken将始终为空,与oldCookieToken的值不同. (3认同)