当前位置:  开发笔记 > 编程语言 > 正文

如何限制AJAX API的使用(例如执行SELECT*的人)

如何解决《如何限制AJAXAPI的使用(例如执行SELECT*的人)》经验,为你挑选了1个好方法。

我有一个餐厅定位器Web应用程序,可以将餐馆的位置与Google地图混合在一起.

我使用JQuery滑块来限制在地图上显示的餐厅数量,具有搜索过滤器,例如:价格,食物类型,区域设置.

这些JQuery滑块通过AJAX回调到我创建的API,以更新地图而不需要刷新网页.

JQuery调用RESTFUL API,如下所示:

http://example.com/search/?city=NYC&max-price:50&cuisine=french

这将返回符合此条件的JSON餐馆字符串,以便我的Web应用程序可以在地图上显示与搜索匹配的所有餐馆.

我不希望发生的事情是有人过来找出我的API并转储我所有的餐馆列表.

有没有办法可以限制谁调用上面的HTTP API,以便只有我的Web服务器调用URL而不是spamer/hackers想要转储我的数据库?

谢谢



1> Bob Aman..:

首先,宣布你的意图robots.txt.

然后,在主页面上发送带有随机数或某种唯一ID的Set-Cookie标头,但不会发送给您的API响应.如果cookie从未发送到您的API端点,请返回401 Bad Request响应,因为它是一个机器人,一个非常破碎的浏览器,或者有人拒绝您的cookie.Referer标题也可以用作额外的检查,但是伪造它是微不足道的.跟踪该ID已进行的API调用次数.您可能还希望将ID与IP地址匹配.如果超过阈值,则吐出403 Forbidden响应.使您的阈值足够高,以便合法用户不会被它抓住.

保持良好的日志,并突出显示401和403响应.

实际上,如果某人足够坚定,他们将能够转储这些信息.你的目标不应该是让这个变得不可能,因为你永远不会成功.(查看关于实现完美安全性的所有常见问题.)相反,您希望非常清楚地表明:

此行为违反了服务条款.

你正在积极地试图阻止这一点.

你知道犯罪者存在并且他们大概是谁.

如果这种情况持续下去,可怕的律师可能会开始介入.

(你确实有律师,对吧?)

要做到这一点,请确保您的403 Forbidden响应正文传达了一条可怕的声音消息:"此请求超出了API的最大允许使用量.您的IP地址已被记录.请参阅服务条款并遵守指令in robots.txt."

IANAL,但我相信如果您声明数据库版权,可以在这种情况下使用DMCA.这实际上意味着,如果您可以跟踪API的非法使用情况,您可以向他们的ISP发送一个讨厌的报告.当然,这应该是最后的手段.

我不鼓励使用指定的API密钥/令牌,因为它们会成为采用的障碍,并且需要管理一些痛苦.作为对@womp答案的反对意见,谷歌正逐渐放弃使用它们.此外,我认为它们实际上并不适用于这种情况,因为听起来您的"API"更像是主要用于您自己网站的JSON调用.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有