我需要在 asp.net Core 中创建 XSRF 中间件吗?
Posted
技术标签:
【中文标题】我需要在 asp.net Core 中创建 XSRF 中间件吗?【英文标题】:Do I need to create an XSRF middleware in asp.net Core? 【发布时间】:2021-06-04 19:28:15 【问题描述】:我不确定是否必须将 xsrf 中间件附加到我的 ASP.NET Core REST Api 应用程序。我已经通过添加 UseCors() 中间件将我的应用程序管道配置为使用 cors,但仍然不明白这是否足够。
现在我同时使用AddAntiforgery
和AddCors
以及我自己的中间件UseXsrf
和微软的UseCors
。
【问题讨论】:
【参考方案1】:Cors 和 xsrf 解决不同的问题,在技术上不相关,仅在概念上相关。
它们都可以防止来自不受信任的域的使用。
CORS 将不允许 domainA 向域中的 api 发出 ajax 请求
XSRF 保护基于 cookie 的身份验证,并且不允许 domainA 在 DomainB 中发布表单。
API 通常不使用第二个选项,因此您很可能根本不需要它。它通常用于 MVC 应用程序。
【讨论】:
【参考方案2】:跨域请求 (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?
【讨论】:
以上是关于我需要在 asp.net Core 中创建 XSRF 中间件吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET CORE Razor Pages 中创建共享表单?
在c#asp.net core web api中创建jwt令牌[重复]
无法在 asp.net core EntityFrameworkCore.core 中创建迁移