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

Den*_*nis 8 c# asp.net antiforgerytoken asp.net-core asp.net-core-webapi

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

我开发了一个带有防伪令牌(点击此链接)和 ASP.NET 6 Razor Pages 的 Web API。一切都很完美。但是我如何开发一个使用这个 Web API 的外部应用程序呢?问题,我不知道如何从“外部”应用程序创建防伪令牌?如何配置应用程序以使用具有防伪令牌的 Web API?

You*_*ell 7

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

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

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

为了执行 CSRF 攻击,主要条件之一是拥有基于 Cookie 的身份验证会话(请查看这篇文章,其中详细解释了 CSRF 攻击是如何执行的),而 API 则不然。

但是,如果您从您的网站使用 Ajax 调用 API,其中 API 与网站同源,并且您依靠 Cookie 来验证用户身份,则可以(并且您应该)集成防伪令牌保护,您可以在 StackOverflow 上查看此答案,了解有关如何实现它的更多详细信息。

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

请查看Microsoft 文档中的这篇文章,了解有关 CSRF 攻击以及如何实施防伪造令牌保护的更多详细信息。

另外,请查看 RedHat 的这篇文章以获取有关API 安全性的更多信息。

  • 关于不需要使用防伪令牌的笼统声明是错误的。 (2认同)