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

时间:2018-02-15 16:10:24

标签: c# .net asp.net-core csrf-protection

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

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

2 个答案:

答案 0 :(得分:5)

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

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

请注意,AutoValidateAntiforgeryTokenAttribute仅适用于不安全的请求(POST,PUT),而不适用于安全的请求(GET,HEAD,OPTIONS,TRACE)。这样,只有易受CSRF攻击的操作才需要防伪签名。确保只有POST或PUT操作可以修改数据非常重要!

对于非API应用程序,official docs推荐使用此全局过滤方法。

答案 1 :(得分:0)

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

据我所知,拥有JWT令牌认证并不是什么大问题。与核心。