And*_*erg 3 .net asp.net-mvc csrf
在ASP.NET MVC中,ValidateAntiForgeryTokenAttribute调用的验证逻辑允许使用匿名防伪标记,即没有任何用户特定信息(如IIdentity.Name或ClaimUid)的标记.
因此,如果未使用声明且登录后未设置HttpContext.User(并非罕见),则系统的恶意用户可以使用恶意用户自己的合法获取的防伪令牌对任何其他用户发起CSRF攻击.
这似乎并不可取.为什么允许使用匿名令牌?
MVC中的反CSRF系统允许匿名用户,因为它需要保护登录页面,根据定义,您在登录之前是匿名的.特别是,它试图防御的攻击是登录CSRF.
由于反CSRF令牌分散在HTTP cookie和隐藏的<input>元素中,因此攻击者是否能够启动登录CSRF取决于他所处的位置.当然 - 您可能会说服我的浏览器提交包含您的令牌的<form> ,但我的浏览器会将我的 cookie连同请求一起提交给服务器.cookie和表单令牌不仅仅编码字符串"anonymous":它们还包含将两者链接在一起的随机标识符.在这种情况下,由于您不知道我的cookie中包含的随机标识符,您仍然无法对我进行登录CSRF攻击.
如果攻击者与目标网站共享域名(例如,attacker.shareddomain.com和bank.shareddomain.com),则攻击者可以为*.shareddomain.com设置cookie并用他自己的一个覆盖受害者的cookie选择.这将允许进行CSRF攻击.您需要其他机制(如2FA或HTML5本地存储)来防止共享子域方案中的CSRF攻击.
归档时间: |
|
查看次数: |
2453 次 |
最近记录: |