C# antifforgery.GetTokens:oldCookieToken参数的用途是什么?

C# antifforgery.GetTokens:oldCookieToken参数的用途是什么?,c#,ios,asp.net-mvc,csrf,antiforgerytoken,C#,Ios,Asp.net Mvc,Csrf,Antiforgerytoken,我们正在用objective-c编写一个iOS移动应用程序,向我们的ASP.NET MVC服务器应用程序发送帖子。在iPhone上,HTTP堆栈(以及cookies等)似乎与Safari共享。这使我们容易受到XSRF攻击,因此除非我弄错了,否则我们需要使用防伪令牌保护帖子,并使用ValidateAntiForgeryTokenAttribute保护控制器方法 我将通过说我没有正确理解反伪造代币的生成和验证机制来限定这个问题。。。特别是,本文中使用的术语“nonce”有点神秘 因为我们没有向客户端

我们正在用objective-c编写一个iOS移动应用程序,向我们的ASP.NET MVC服务器应用程序发送帖子。在iPhone上,HTTP堆栈(以及cookies等)似乎与Safari共享。这使我们容易受到XSRF攻击,因此除非我弄错了,否则我们需要使用防伪令牌保护帖子,并使用
ValidateAntiForgeryTokenAttribute
保护控制器方法

我将通过说我没有正确理解反伪造代币的生成和验证机制来限定这个问题。。。特别是,本文中使用的术语“nonce”有点神秘


因为我们没有向客户端交付HTML,所以我们不能使用标准的
@HTML.AntiForgeryToken()
,因此我们必须使用来获取令牌并将其分发给客户端。这有一个神秘的第一个参数:
oldCookieToken
。目前,我只是将其设置为
null
,一切似乎都正常。谁能告诉我。。。向令牌生成算法提供旧令牌有什么用?如果只向我们的iOS应用程序发出一个令牌,并在多个帖子中重复使用,这会有问题吗?

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


因此,将
null
传递给
oldCookieToken
是有效的。它只是告诉
GetTokens
始终生成新的cookie令牌。

注意:如果传入有效的oldCookieToken,则newCookieToken将始终为空,而不是与oldCookieToken相同的值。