加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC中的AntiForgeryToken是否防止所有CS

发布时间:2020-12-16 00:36:59 所属栏目:asp.Net 来源:网络整理
导读:使用AntiForgeryToken需要每个请求传递一个有效的令牌,所以使用简单的脚本发布数据到我的Web应用程序的恶意网页将不会成功。 但是如果一个恶意脚本首先会做一些简单的GET请求(由Ajax),以便在隐藏的输入域中下载包含防伪令牌的页面,将其提取并使用它来生成
使用AntiForgeryToken需要每个请求传递一个有效的令牌,所以使用简单的脚本发布数据到我的Web应用程序的恶意网页将不会成功。

但是如果一个恶意脚本首先会做一些简单的GET请求(由Ajax),以便在隐藏的输入域中下载包含防伪令牌的页面,将其提取并使用它来生成一个有效的POST?

有可能吗,还是我错过了什么?

解决方法

是的,这是你需要做的所有事情。

只要在每个受保护的页面上生成一个新的标记,<%= Html.AntiForgeryToken()%>
并始终确保在任何受保护的操作中检查,使用[ValidateAntiForgeryToken]

这将实现OWASP CSRF Prevention Cheat Sheet处讨论的同步器令牌模式。

为了使脚本成功地提出可接受的请求,它必须先获取表单并读取令牌,然后发布令牌。 Same Origin Policy将阻止它在浏览器中被允许。网站可以向另一个网站制作AJAX样式http请求;只对自己如果由于某种原因可以违反相同的起源政策,那么您将变得脆弱。

请注意,如果您有跨站点脚本漏洞,则攻击者可能会滥用xss漏洞来规避同一原始策略提供的保护(因为脚本现在正在从您自己的站点运行,因此SOP成功)。然后,注入的脚本可以愉快地读取并重新提交令牌。通过XSS实现CSRF保护的这种技术最近在一些蠕虫中很常见。基本上,如果您有XSS,您的CSRF保护是浪费时间,所以确保您不会受到任何影响。

另外值得注意的是Flash和Silverlight。这两种技术都不订阅相同的原始策略,而是使用跨域策略文件来限制对远程资源的访问。如果您在自己的网站上发布跨域策略xml文件,Flash / Silverlight脚本只能访问您网站上的资源。如果您发布此文件,只允许允许信任的第三方服务器的白名单,并且不允许*。

阅读更多关于CSRF at OWASP
参见:XSS Prevention Cheat Sheet

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读