第三方 API 如何防止 API 报价被盗?

its*_*iva 6 security api google-maps api-key

我正在编写一个使用第三方 API 服务的应用程序(例如 Google 地图、分段分析等...)。所有这些应用程序都会提供一个应该嵌入 JS 代码中的 API 密钥。

因此任何可以检查源的人都知道客户端密钥。这些服务如何防止该密钥的错误使用。假设有人用我的密钥调用这些 API 的次数达到了每日允许的最大 API 调用限制,这将使进一步的实际 API 调用失败。

我知道 Referrer Header 可以用来检查请求来源,但是 Referrer Header 很容易被精明的用户欺骗。

不知道服务方面有没有采取什么措施。看起来是一个非常大的问题。

提前致谢。

Gab*_*yel 4

这是有风险的,但如果 API 提供商做好了准备,风险并没有看起来那么糟糕。

首先要注意的是,这样的 API 密钥不用于身份验证,因为它不会对调用者(应用程序和最终用户)进行身份验证。它仅用于速率限制和跟踪之类的事情。

因此,真正的威胁与您所描述的类似,例如有人使用您的 API 密钥并耗尽您的配额。但是,如果该人从自己的计算机或网络执行此操作,则所有恶意流量都会从他的 IP 或 IP 范围内看到。如果 API 提供商很聪明并且具有良好的监控(例如 Google),他们不会撤销/禁用您的 API 密钥,而只会过滤或忽略恶意流量。

因此,攻击者应该能够使用您的 API 密钥建立一个网站并让用户访问它。但是,在这种情况下,引用/原始标头无法被欺骗,浏览器通常不会允许 Javascript 更改请求中的引用或原始标头。同样,API 提供商有一种方法可以根据引用/来源过滤恶意流量。

攻击者需要访问许多不同的客户端,例如僵尸网络,才能使用您的 API 密钥发出所有这些请求,以耗尽您的配额。这可能会起作用,但如果攻击者可以通过分布式拒绝服务来攻击您的站点,那么您主要关心的可能不是您的 API 密钥。

  • 据我了解,某些服务可以过滤来自特定 IP 的流量。当我的目标受众是学校时,大多数请求都来自同一 IP,并且攻击者也在该 IP 上耗尽配额,会发生什么情况。 (2认同)