.net – 为什么ValidateAntiForgeryTokenAttribute允许匿名令牌
在ASP.NET MVC中,ValidateAntiForgeryTokenAttribute调用的验证逻辑允许匿名防伪令牌,即没有任何用户特定信息(如IIdentity.Name或ClaimUid)的令牌.
因此,如果未使用声明且登录后未设置HttpContext.User(并非罕见),则系统的恶意用户可以使用恶意用户自己的合法获取的防伪令牌对任何其他用户发起CSRF攻击. 这似乎并不可取.为什么允许使用匿名令牌? 解决方法
MVC中的反CSRF系统允许匿名用户,因为它需要保护登录页面,根据定义,您在登录之前是匿名的.特别是,它试图防御的攻击是
Login 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攻击. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Visual Studio IIS Express不工作
- asp.net-mvc – 用于ASP.NET MVC 3中用户帐户注册的Faceboo
- asp.net-mvc-4 – 如何使用业务标识提供程序(例如ADFS2)
- 如何编写没有Try/Catch的程序
- asp.net – Request.IsAuthenticated永远不会成立
- asp.net – 只能将一个ScriptManager实例添加到页面中
- asp.net-mvc – ASP.NET MVC 4重定向回索引视图
- ASP.NET连接sqlserver
- asp.net-mvc-3 – 如何重定向已登录的用户,该用户正在尝试访
- asp.net-mvc – 使用ASP.NET MVC响应HTTP HEAD请求
- asp.net-core – 如何从MVC 6中的ASP.Net 5 Tag
- asp.net-core-mvc – IN MVC6返回Json(行,JsonRe
- asp.net – 为什么不删除Server和X-Powered-By标
- asp.net-core – ASP.NET核心MVC应用程序设置
- asp.net – 哪些移动浏览器支持javascript(和Aja
- 配置文件_自定义section标签获取数据
- asp.net-mvc – 如何每秒自动刷新MVC PartialVie
- dependency-injection – 如何使用ASP.NET MVC 3
- asp.net-mvc-3 – 在MVC3中设置所选选项
- asp.net – Web部署错误到IIS – 应用程序池mana