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

本文关键字:是什么 参数 oldCookieToken GetTokens AntiForgery | 更新日期: 2023-09-27 18:10:36

我们正在用objective-c编写一个iOS移动应用程序,它可以向我们的ASP发送帖子。在iPhone上,HTTP栈(和cookie等)似乎与Safari共享。这使我们容易受到XSRF攻击,所以除非我弄错了,我们需要使用防伪令牌保护post,并使用ValidateAntiForgeryTokenAttribute保护我们的控制器方法。

我要限定这个问题,说我没有正确理解防伪造令牌生成和验证的机制…特别是,在这种情况下使用的术语"nonce"有点神秘。

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

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

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

所以传递nulloldCookieToken是有效的。它只是告诉GetTokens总是生成一个新的cookie令牌。