概述:
My company has developed a rate-limited API. Our goal is twofold:
澄清: 为什么要设定利率上限?
We rate limit our API, because we sell it as an addition to our product. Anonymous access to our API has a very low threshold for API calls per hour, whereas our paid customers are permitted upwards of 1000 calls per hour or more.
The Problem:
我们的速率限制 API 是伟大的开发者生态系统,但为了我们的狗粮,我们不能允许它被限制在同样的速率限制。我们的 API 的前端都是 JavaScript,对 API 进行直接的 Ajax 调用。
所以问题是:
你如何保护一个 api,使利率限制可以删除的地方,在消除这种利率限制的过程中不容易欺骗?
探索解决方案(以及为什么它们不起作用)
Verify the referrer against the host header. -- 有缺陷是因为 < strong > 参考者 很容易被伪造。
使用 HMAC根据请求和共享秘密创建签名,然后在服务器上验证请求。—— Flawed because the secret and algorithm would be easily determined by looking into the front end JavaScript.
代理请求并在代理中签名请求—— 仍然存在缺陷,因为代理本身暴露了 API。
The Question:
我期待着对堆栈溢出的聪明头脑提出替代解决方案。你将如何解决这个问题?