web-services - 如何阻止开发人员获取多个 API key

标签 web-services api language-agnostic

大多数 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/

相关文章:

java - Web 服务返回 SID - 如何将结果存储为整数?

c - 用 C89 注释替换 C++ 单行注释

ruby-on-rails - Rails 应用程序,通过 API 上传,通过 curl 测试

math - 向上计数 "broadly": Not 0, 1,2,..,9,10,11,..,99 但 00, 01, 10, 11, 02, 12, 20, 21, 22, 03, .., 9

windows - 诊断一个集群软件的病态行为

c# - 网络服务中的其他方法未显示

c - gsoap 生成的 wsdl 无法与 eclipse WebServices explorer 一起使用

java - 如何在 JAX-RS 中为子资源中的子资源设计路径?

c# - Magento SOAP V2 API - 附加属性设置为空

php - Facebook PHP SDK oauth 1.0 还是 2.0