我需要在 asp.net Core 中创建一个 XSRF 中间件吗?

问题描述

我不确定是否必须将 xsrf 中间件附加到我的 ASP.NET Core REST Api 应用程序。我已经通过添加 UseCors() 中间件将我的应用程序管道配置为使用 cors,但仍然不明白这是否足够。

现在我同时使用 AddAntiforgeryAddCors 以及我自己的中间件 UseXsrf 和微软的 UseCors

解决方法

Cors 和 xsrf 解决不同的问题,在技术上没有关系,只是在概念上。

它们都可以防止来自不受信任的域的使用。

CORS 将不允许域 A 向域中的 api 发出 ajax 请求

XSRF 保护基于 cookie 的身份验证,并且不允许域 A 在域 B 中发布表单。

API 通常不使用第二个选项,因此您很可能根本不需要它。它通常用于 MVC 应用程序。

,

跨域请求 (CORS):

CORS 仅适用于浏览器上下文,是一种允许一个源向另一个源发出请求的安全机制。所有浏览器都遵循单一源策略,这意味着默认情况下脚本不能向其他源发出请求 - 但如果服务器提供正确配置的 CORS 标头,则可以选择性地放宽此策略。

有关 CORS 的更多详细信息,请参阅 Enable Cross-Origin Requests (CORS) in ASP.NET Core

跨站请求伪造 (XSRF/CSRF) 攻击

CSRF 是一种攻击,恶意站点将使用经过身份验证的用户信息(例如身份验证 cookie、身份验证令牌)对 Web 应用程序执行不需要的操作。您可以从Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core查看详细信息。

在我看来,如果你想让应用程序更安全,你可以同时使用它们。

参考:Does a proper CORS setup prevent XSRF?

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...