gpt4 book ai didi

javascript - Dogfooding 我们自己的限速 API

转载 作者:IT王子 更新时间:2023-10-29 02:39:37 30 4
gpt4 key购买 nike

概述:

我的公司开发了一个速率受限的 API。我们的目标有两个:

  • A:围绕我们的产品打造强大的开发者生态系统。
  • B:通过使用 API 来驱动我们自己的应用程序来展示它的强大功能。

澄清:为什么要限制速率?

我们对 API 进行评级限制,因为我们将其作为产品的补充进行销售。匿名访问我们的 API 对每小时 API 调用的阈值非常低,而我们的付费客户每小时允许超过 1000 次调用或更多。

问题:

我们的限速 API 非常适合开发者生态系统,但为了让我们对其进行 dogfood,我们不能让它被限制在相同的限速范围内。我们 API 的前端全部是 JavaScript,直接对 API 进行 Ajax 调用。

那么问题是:

How do you secure an api so that rate-limiting can be removed where in the process in removing such rate-limiting can't be easily spoofed?

已探索的解决方案(以及它们为何不起作用)

  1. 根据主机 header 验证引荐来源网址。 -- 存在缺陷,因为 referrer 很容易伪造。

  2. 使用HMAC根据请求和共享 key 创建签名,然后在服务器上验证请求。 -- 有缺陷,因为可以通过查看前端 JavaScript 轻松确定 secret 和算法。

  3. 代理请求并在代理中签署请求——仍然存在缺陷,因为代理本身公开了 API。

问题:

我期待 Stack Overflow 上的聪明才智提出替代解决方案。你会如何解决这个问题?

最佳答案

由于您自己的 JavaScript 客户端直接访问 API,因此任何人都可以查看它在做什么并模仿它,包括使用相同的 API key 。你可以尝试让它变得更难,比如通过混淆你的代码或设置各种障碍,但你和你试图限制的人基本上有相同的访问权限。您无需尝试创建特权差异,而是需要构建一个系统,在该系统中,非官方客户端使用其范围内的所有访问权限是完全可以的,但是系统的安排方式是所有客户端的正式使用是更大。

这通常是通过每个用户的访问 token 完成的,而不是整个应用程序的一个 token 。每个 token 的限制对于您的 API 的典型使用应该足够,但对于试图滥用它的人来说是限制性的。例如,每分钟 100 次调用可能足以支持典型的浏览,但如果我想抓取你,我无法在那个预算下有效地做到这一点。

总会有一场军备竞赛——我可以通过创建大量机器人用户帐户来绕过限制。不过,如果您只是在注册流程中添加一个验证码,那么这就是一个很好解决的问题,而这对真人来说只是一点点代价。当你进入这些场景时,一切都只是方便和限制之间的权衡。你永远找不到完全防弹的东西,所以专注于让它足够好,等到有人利用你来了解漏洞在哪里。

关于javascript - Dogfooding 我们自己的限速 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939229/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com