大多数 API 要求开发人员获取 API key 。然后,API key 用于速率限制。如何阻止开发人员获取多个 API key 来防止速率限制?
我面临的问题是决定如何颁发 API key 。我发现唯一有效的方法是颁发更多的“开发人员 key ”。
- 我还没有找到一种方法来真正限制应用程序的使用率(有人可以获取多个 key 并将它们按顺序输入到他的应用程序中,以获得该应用程序的更高费率)
- 而且我还没有找到一种方法来保留每个应用程序的 key (有人可以获得 key 并在多个域上使用它)
最佳答案
API key 不是进行速率限制的正确工具,特别是当 API 是后端可调用时。如果代码集成在最终用户的浏览器中,它就可以工作,因为它充当“中立地”,可以确保应用程序身份不被欺骗,但如果从客户端开发人员编写的服务或应用程序调用它,则不行.
资源利用控制是一个经济问题,因此需要经济的解决方案。需要独特的hashcash每次调用 token 是强制执行此操作的好方法。 (Hashcash 是一种工作量证明方案——它要求调用者证明他们在毫无意义的任务上花费了大量 CPU 时间,以此证明请求对他们有值(value)。)
它还可以根据负载进行扩展——如果您的服务不堪重负,您可以动态增加 token 中所需的前导零位的“价格”;每增加一位将使请求率降低一半。 (只要确保您的 API 可以传达 hashcash“价格”(如果它是动态的)。)
关于web-services - 如何阻止开发人员获取多个 API key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961295/