是否正在使用access-control-allow-origin来防止滥用api?

时间:2016-06-20 18:55:01

标签: ruby-on-rails api http-headers cors

我正在制作一个使用另一个api的api后端,例如Twitter。 (请注意,实际的api不是twitter,但我以它们为例)。

假设Twitter对可以对其api进行的呼叫数量有限制,并且超过此限制,它开始向我的信用卡收费。这就是为什么对我来说非常重要的是没有人误用我的api。

我想阻止人们查看我的前端代码并查看它所触及的端点,因为如果有恶意的人这样做,我会很快超过限制并且必须支付$$$。

我的前端代码使用get来调用mybackend.com/twitter/api

只需在我的后端添加Access-Control-Allow-Origin标题就足够了吗?

headers['Access-Control-Allow-Origin'] = 'myfrontend.com'

我之所以这样问是因为我注意到直接在浏览器中输入mybackend.com/twitter/api是有效的,如果我将access-control-allow-origin设置为特定网站,这就不是我所期望的。

我做错了吗?我如何阻止某人只是编写一个脚本来点击我的后端,因为很明显只要在浏览器的网址中输入它就可以了,尽管我有一个access-control-allow-origin标题。

1 个答案:

答案 0 :(得分:0)

您的问题有两种可能的解决方案。您可以尝试为API实现请求签名,以准确了解后端的源代码。您可以查看其工作原理here

第二个选项,对我来说,一个更好地适合您的问题的方法是在您的服务器Load Balancer上设置拒绝服务方法,以防止来自同一来源的多个请求,因此,不要让那些恶意请求袭击你的后端。