【问题标题】:Is there any point in an Azure Function API Key when the Key is public?当密钥公开时,Azure 函数 API 密钥有什么意义吗?
【发布时间】:2018-09-15 05:46:49
【问题描述】:

Azure Functions 允许将 API 密钥用作一种授权形式。

API key authorization

默认情况下,HTTP 触发器需要 HTTP 请求中的 API 密钥。 因此,您的 HTTP 请求通常如下所示:

https://<yourapp>.azurewebsites.net/api/<function>?code=<ApiKey>

您可以允许不需要密钥的匿名请求。

在我的例子中,Azure 函数是在网站单页客户端应用程序中使用的,因此任何调试应用程序的人都可以有效地公开获取 API 密钥。

在这种情况下,使用 API 密钥有什么意义吗?

【问题讨论】:

  • 所以基本上在密钥是公开的 SPA 中使用 API 密钥的唯一好处是避免爬虫和意外调用,如下所述?

标签: azure http security azure-functions api-key


【解决方案1】:

对于意外调用和愚蠢的爬虫仍然有用。对于后者,您应该在标题中使用键,如下所示:

GET /api/get-issues HTTP/1.1
Host: {funcapp}.azurewebsites.net
User-Agent: ajax-library-of-the-day
x-functions-key: rkW0PqT.....zcUBQ==

如果用户代理到后端 API 授权是您的主要关注点,您将需要 OAuth 2.0 隐式流程。

如果您为 401 Unauthorized 付费,我们无法发表评论。很可能不会,否则这将导致非常昂贵的攻击向量,而您的订阅成本很高。

【讨论】:

  • 如果 401 是由 EasyAuth 或函数运行时引起的(如本例所示),则用户无需为执行付费。
猜你喜欢
  • 2019-12-25
  • 2013-07-14
  • 2013-12-27
  • 2021-10-05
  • 1970-01-01
  • 2021-12-25
  • 2021-01-09
  • 2016-07-17
  • 1970-01-01
相关资源
最近更新 更多