在外部消费者(应用程序)中使用 ASP.NET Core 6 Web API 防伪令牌,无需身份验证

2024-03-05

如何在 ASP.NET Core 6 Web API 中与 iOS 或 Android 应用程序等外部消费者一起使用防伪令牌?我不需要对请求进行用户身份验证。该应用程序托管在另一个域上。

我开发了一个带有防伪令牌的 Web API(已关注此链接 https://learn.microsoft.com/en-us/aspnet/core/security/anti-request-forgery?view=aspnetcore-6.0#antiforgery-in-aspnet-core)和 ASP.NET 6 Razor 页面。一切都很完美。但是我如何开发一个使用这个 Web API 的外部应用程序呢?问题,我不知道如何从“外部”应用程序创建防伪令牌?如何配置应用程序以使用具有防伪令牌的 Web API?


在构建 API 时,没有必要针对 CSRF 攻击实施防伪造令牌保护,因为 API 的构建方式和使用方式需要不同的保护方法,例如:

  • 使用 API 密钥。
  • 使用基本身份验证。
  • 使用 OpenID 连接。

因为目标是防止恶意客户端调用我们的 API,所以我们需要验证对 API 执行请求的客户端应用程序的身份。

为了执行 CSRF 攻击,主要条件之一是拥有基于 Cookie 的身份验证会话(看看这个article https://portswigger.net/web-security/csrf其中详细解释了 CSRF 攻击是如何执行的),而 API 则不然。

但是,如果您从您的网站使用 Ajax 调用 API,其中 API 与网站同源,并且您依靠 Cookie 来验证用户身份,则可以(并且您应该)集成防伪令牌保护,你可以检查这个StackOverflow 上的回答 https://stackoverflow.com/questions/11476883/web-api-and-validateantiforgerytoken有关如何实施的更多详细信息。

但由于您要从外部应用程序调用 API,只需使用上述方法之一。

检查这篇文章微软文档 https://learn.microsoft.com/en-us/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks有关 CSRF 攻击以及如何实施防伪造令牌保护的更多详细信息。

另外,请查看 RedHat 的这篇文章以获取有关的更多信息API安全性 https://www.redhat.com/en/topics/security/api-security.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在外部消费者(应用程序)中使用 ASP.NET Core 6 Web API 防伪令牌,无需身份验证 的相关文章

随机推荐