如何在 ASP.NET Core 中默认防止 CSRF

How to protect against CSRF by default in ASP.NET Core

灵感来自:How to protect against CSRF by default in ASP.NET MVC 4?

有没有办法在 ASP.NET Core 中实现相同的结果?

您可以将 AutoValidateAntiforgeryTokenAttribute 应用为 Startup.ConfigureServices() 中的全局过滤器,因此它会自动应用于您的所有路由:

services.AddMvc(options => 
    options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()));

请注意,AutoValidateAntiforgeryTokenAttribute 仅适用于不安全请求(POST、PUT),不适用于安全请求(GET、HEAD、OPTIONS、TRACE)。这样,只有易受 CSRF 攻击的操作才需要防伪令牌。请务必确保只有您的 POST 或 PUT 操作修改数据!

official docs 为 non-API 应用程序推荐了这种全局过滤器方法。

另一种永久防止 CSRF 的方法是根本不使用 cookie 进行身份验证。如果有可能,我会尝试检查令牌身份验证并实施它。没有 cookie,没有 CSRF。

据我所知,拥有 JWT 令牌身份验证并不是什么大问题,例如与核心。