如何解决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
不是外部超链接。
在ASP.NET Core 2.0或更高版本中,FormTagHelper将防伪令牌注入HTML表单元素。
并且:
当标记包含method =“ post”属性且以下任一条件为true时,会自动生成HTML表单元素的防伪标记:
- 动作属性为空(action =“”)。
- 未提供action属性()。
也:
我们建议在非API方案中广泛使用
AutoValidateAntiforgeryToken
。这样可以确保POST操作在默认情况下受到保护。替代方法是默认情况下忽略防伪令牌,除非将ValidateAntiForgeryToken
应用于各个操作方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。