我如何保护我的AJAX服务?

时间:2012-11-29 16:34:48

标签: php ajax web-services jquery

目前我正在处理一项服务,该服务处理覆盖在Google地图上的本地餐馆的评论/推荐。基本上是Yelp,但仅限于一定的利基。无论如何,因为我不想加载每个位置并立即查看,所以我终于开始使用jQuery和AJAX调用。

我的问题是:如何阻止其他人从服务器上的ajax脚本中“抓取”数据?

主要的地图/位置信息功能需要是公开的,因为用户不必登录即可使用该应用程序,因此可能只是简单地归结为使其难以。我希望你们中的一位AJAX老手可以指出我更好的想法,或者一些我还没有找到的“最佳实践”文档。

到目前为止,我所能想到的只有:

  • 面向用户的脚本在服务器上打开一个短暂的会话,如果没有活动会话,AJAX调用将无法运行。
  • 发送某种访问密钥以及应用程序代码,并要求在所有AJAX调用中使用。但不确定如何以一种非常容易解决的方式最好地实现这一点。

2 个答案:

答案 0 :(得分:5)

您无法完全保护您的AJAX网络服务。即使你破坏了你的数据并混淆了你的源代码,只需启动一个数据包嗅探器或调试代理,弄清楚它,并从中汲取它。

我要做的就是你提出的建议......只有在网站上有活动会话的用户才能拨打电话。然后从那里开始节流请求。

即使是繁忙的普通用户也不会每分钟发出少量请求。您可以分析日志以确定好的数字。即使您将服务限制为每分钟20次,这种限制也会使那些想要复制所有内容的用户毫无用处。

不要仅限于会话数据......请密切关注IP地址。完全有可能随时发起请求并获得新会话。定期检查您的日志以查看是否有任何问题,并相应地调整您的策略。

最后,定期搜索您的内容。 Google是查找版权侵权者的绝佳工具。如果您使用特定数据(例如GPS坐标),您实际上可以使用坐标的噪声区域中的特定值为坐标添加水印。

答案 1 :(得分:1)

据我所知,您希望保护服务的JavaScript方面。这是不可能的,因为JavaScript基本上是完全开源的(尽管不是公共领域)

Google提供tool called Google Closure,可以通过删除空格和标签来压缩脚本。它还可以通过用随机字符替换变量名称和函数名称来为您混淆文档。它是可定制的,因此您可以告诉它您想要什么。据我所知,谷歌将其用于他们自己的网站(通过查看他们的网页来源显而易见)