gpt4 book ai didi

.net - 为什么 ValidateAntiForgeryTokenAttribute 允许匿名 token ?

转载 作者:行者123 更新时间:2023-12-05 00:54:14 24 4
gpt4 key购买 nike

在 ASP.NET MVC 中,ValidateAntiForgeryTokenAttribute 调用的验证逻辑允许匿名防伪 token ,即没有任何用户特定信息(如 IIdentity.Name 或 ClaimUid)的 token 。

因此,如果未使用声明且登录后未设置 HttpContext.User(并不少见),则系统的恶意用户可以使用恶意用户自己合法获取的防伪 token 对任何其他用户发起 CSRF 攻击。

这似乎并不可取。为什么允许匿名 token ?

最佳答案

MVC 中的反 CSRF 系统允许匿名用户,因为 需要保护登录页面 ,根据定义,您在登录之前是匿名的。特别是,它试图防御的攻击是 Login CSRF .

由于反 CSRF token 分布在 HTTP cookie 和隐藏的 元素中,因此攻击者是否能够实现登录 CSRF 取决于他所在的位置。当然 - 您可以说服我的浏览器提交包含您的 token 的

,但我的浏览器会将我的 cookie 与请求一起提交给服务器。 cookie 和表单标记不仅仅编码字符串“anonymous”:它们还包含将两者链接在一起的随机标识符。在这种情况下,您仍然无法对我发起登录 CSRF 攻击,因为您不知道我的 cookie 中包含的随机标识符。

如果攻击者与目标网站共享一个域(例如,attacker.shareddomain.com 和 bank.shareddomain.com),那么攻击者可以为 *.shareddomain.com 设置一个 cookie 并用他自己的一个覆盖受害者的 cookie选择。这将允许发生 CSRF 攻击。您需要另一种机制(如 2FA 或 HTML5 本地存储)来防止共享子域场景中的 CSRF 攻击。

关于.net - 为什么 ValidateAntiForgeryTokenAttribute 允许匿名 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com