我可以在我使用的MVC网站上重现CSRF攻击
@Html.AntiForgeryToken()
包含以下步骤。我有一个Web Api充当攻击者的环境,以及一个连接到这个web api以检索CSRF令牌的恶意html页面。
步骤:
- 有效用户登录我的MVC网站。
- 当会话处于活动状态时,用户被欺骗打开恶意网页(因为可以限制SameOrigin,所以不是网站)。
- 在此页面上,对攻击者的Web Api进行ajax调用,该应用程序使用WebClient从用户登录的MVC网站下载内容。通过这样做,攻击者可以从html主体以及Set-Cookie标头获取CSRF令牌。这个web api返回这些令牌作为对该网页的响应,然后使用javascript在请求中使用cookie和标头设置转发资金或与易受攻击的MVC网站相关的任何内容进行一些格式错误的ajax调用。
- 由于转移到攻击者的令牌不同,但两个令牌互相有效,它们会自动验证并执行操作。
醇>
我自己做过,所以在这种情况下如何保护呢?如果有人误解,请有人帮忙解释,或者提供建议。
编辑:只有第一页(在我的情况下,登录页面是我在渲染令牌的CSHTML,登录后的其余UI是纯HTML和JavaScript。