21

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

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

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

4

1 回答 1

24

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

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

于 2013-05-20T21:36:30.127 回答