微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CSRF令牌是否自动应用于AspNetCore 3. +控制器中?

如何解决CSRF令牌是否自动应用于AspNetCore 3. +控制器中?

我已经了解到CSRF令牌在Razor页面中会自动进行验证,但这是否也适用于控制器,还是我仍然必须在视图中使用@Html.AntiForgeryToken() TagHelper和我的[ValidateAntiForgeryToken]属性控制器方法

如果是这样,我已经读过Andrew Locks Blog,可以添加一个Filter来执行相同的操作,但这是在NetCore 3. +之前的。

我的Startup.cs中的此实现正确吗?

services.AddControllers()
    .AddMvcoptions(options => {
        options.Filters.Add(new AutovalidateAntiforgeryTokenAttribute());
    });

解决方法

否,您不需要使用@Html.AntiForgeryToken(),因为当您使用<form>标签帮助程序时,它将为您插入防伪令牌(如果method属性为“ post ”,而action不是外部超链接。

https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery?view=aspnetcore-3.1#aspnet-core-antiforgery-configuration

在ASP.NET Core 2.0或更高版本中,FormTagHelper将防伪令牌注入HTML表单元素。

并且:

当标记包含method =“ post”属性且以下任一条件为true时,会自动生成HTML表单元素的防伪标记:

  • 动作属性为空(action =“”)。
  • 未提供action属性()。

也:

我们建议在非API方案中广泛使用AutoValidateAntiforgeryToken。这样可以确保POST操作在默认情况下受到保护。替代方法是默认情况下忽略防伪令牌,除非将ValidateAntiForgeryToken应用于各个操作方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。