我们正在用Objective-C语言编写一个iOS移动应用程序,该应用程序会将帖子发布到我们的ASP.NET MVC服务器应用程序中。在iPhone上,HTTP堆栈(和cookie等)似乎已与Safari共享。这使我们容易受到XSRF攻击,因此,除非我没有弄错,否则我们需要使用防伪 token 保护POST并使用ValidateAntiForgeryTokenAttribute
保护我们的 Controller 方法。
我将通过不正确理解生成和验证反伪造 token 的机制来证明这个问题的正确性……尤其是,在这种情况下使用的“nonce”一词有些神秘。
因为我们没有将HTML交付给客户端,所以我们不能使用标准的@Html.AntiForgeryToken()
,因此我们必须使用 AntiForgery.GetTokens
来获取 token 并将其分发给我们的客户端。它有一个神秘的第一个参数:oldCookieToken
。此刻,我只是将其设置为null
,一切似乎都可以正常工作。谁能告诉我...将旧 token 提供给 token 生成算法有什么用?如果仅将单个 token 发布到我们的iOS应用并重复用于多个帖子,这会出现问题吗?
最佳答案
AntiForgery.GetTokens
将尝试重用旧的cookie token 以进行验证。因此,如果您已经具有要重用的验证 token ,它将尝试使用它而不是生成一个新的 token 。如果旧 token 无效,它将生成一个新 token 并使用它。
因此,将null
传递给oldCookieToken
是有效的。它只是告诉GetTokens
始终生成一个新的cookie token 。
关于c# - AntiForgery.GetTokens : what is the purpose of the oldCookieToken parameter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16192019/