c# - AntiForgery.GetTokens : what is the purpose of the oldCookieToken parameter?

标签 c# ios asp.net-mvc csrf antiforgerytoken

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

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

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

最佳答案

AntiForgery.GetTokens 将尝试重新使用旧的 cookie 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/

相关文章:

c# - Entity Framework - 无法更新 EntitySet 二进制数据

C# - 使用 DataAdapter 从 DataTable 更新 SQL 表 - SQL 表不更新

JavaScript - ASP MVC 4 中 skelJs 中未处理的异常

asp.net-mvc - JQuery 中的 ViewBag

ios - 用于 VOIP iOS 应用程序的 PushKit

c# - 无法在 MVC 应用程序中获取项目目录路径

c# - 从其他 Xaml 文件绑定(bind)到 Usercontrol 中的元素

C#/WPF : Can I Store more that 1 type in Clipboard?

javascript - 在 JSConext 的方法中传递 block

ios - 有没有办法将pdf文件嵌入到html5页面中?