7

根据docs.microsoft.com , ASP.NET 核心实现了 Synchronizer Token Pattern 来缓解 CSRF。

反请求伪造机制有许多影响用户的缺点:

ex 1:登录页面在 2 个选项卡中打开

  • 在两个不同的选项卡中打开登录页面
  • 用户 A 从选项卡 1 记录(无问题)
  • 在不刷新 Tab 2 的情况下,用户 B 尝试登录。

=> 产生一个带有 AntiforgeryValidationException 的 400 页

参考1 , 参考2

ex 2:在 2 个选项卡中打开的表单(来自邮件中的同一链接)

  • 从模板创建一个新的 Asp.Net Core MVC 网站(VS 2019)
  • 创建一个具有简单表单的新页面,该表单在发布时使用 [ValidateAntiForgeryToken] 进行验证。
  • 通过电子邮件向自己发送指向该页面的链接(我使用过 Gmail 和 Mailtrap)
  • 通过正常单击在两个选项卡中打开链接
  • 以任意顺序提交两种表格

=> 首先打开的表单会产生 400 错误

参考

看起来 SameSite=strict 是针对 CSRF 攻击的有效安全措施

根据这篇文章这个 RFC 草案,SameSite cookie 似乎是针对 CSRF 攻击的有效且强大的安全措施。ASP.NET Core 2.2 的身份验证 cookie 配置为 SameSite=strict。如果我的理解是正确的,身份验证cookie只会在同站点导航的情况下发送到服务器。

在我的用例中,我信任子域。

因此,如果我可以保证我的用户使用的是支持 SameSite 策略的浏览器,那么禁用我的 ASP.NET Core 应用程序的反 CSRF 机制是否安全?

4

0 回答 0