Php 如何保护我的AJAX服务?

Php 如何保护我的AJAX服务?,php,ajax,web-services,jquery,Php,Ajax,Web Services,Jquery,现在,我正在开发一项服务,它可以处理覆盖在谷歌地图上的当地餐馆的评论/推荐。基本上是叫喊,但限于某个特定的利基。无论如何,因为我不想一次加载每个位置并查看,所以我终于开始使用jQuery和AJAX调用了 我的问题是:如何防止其他人从服务器上的ajax脚本中“刮取”数据 主要的地图/位置信息功能需要是公共的,因为用户不必登录就可以使用该应用程序,因此它可能简单地归结为很难获取。我希望你们中的一位AJAX老手能为我指出一个更好的想法,或者一些我还没有找到的“最佳实践”文档 到目前为止,我所能想到的是

现在,我正在开发一项服务,它可以处理覆盖在谷歌地图上的当地餐馆的评论/推荐。基本上是叫喊,但限于某个特定的利基。无论如何,因为我不想一次加载每个位置并查看,所以我终于开始使用jQuery和AJAX调用了

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

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

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

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

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


谷歌提供了一个可以通过删除空白和标签来压缩脚本的工具。它还可以通过用随机字符替换变量名和函数名来混淆文档。它是可定制的,所以你可以告诉它你想要什么。据我所知,谷歌将其用于他们自己的网站(通过查看他们页面的源代码可以明显看出)

您无法完全保护您的AJAX web服务。即使你弄乱了你的数据,混淆了你的源代码,只要启动一个包嗅探器或调试代理,找出它,然后从中抓取,这是很简单的

我会做的正是你建议的。。。只有在站点上具有活动会话的用户才能拨打电话。然后,从那里,节流请求

即使是忙碌的普通用户,每分钟也不会发出超过几个请求。您可以分析日志,找出一个合适的数字。即使你将你的服务限制在每分钟20个电话,这种限制对于那些想复制你所有内容的人来说也是毫无用处的

也不要只限制会话数据。。。注意IP地址。完全可以随时发出请求并获得新会话。定期检查日志,看看是否有任何进展,并相应地调整策略


最后,定期搜索你的内容。谷歌是寻找版权侵权者的一个很好的工具。如果您使用特定的数据,例如GPS坐标,您实际上可以在坐标的噪波区域中使用特定值对坐标进行水印处理。

请记住JS基本上是开源的。最接近的是模糊处理JavaScript模糊处理没有多大用处,特别是因为他真正需要保护的是被访问的数据。谷歌没有像缩小代码那样对代码进行模糊处理,这也有类似的效果,但其目标是缩小代码以供下载。@Brad minify本质上是在不了解JavaScript模糊处理的情况下可以得到的最好的模糊处理。这将阻止任何潜在的黑客(那些试图进入黑客世界的黑客)我一直在考虑添加一些“红鲱鱼”位置,但在coords上添加水印对我来说是新的。这个“噪音”区域到底存在到小数点后多远?@Sammitch,这取决于你的精度需要和在地球上的位置。(例如,纬度越高,经度之间的距离越小。)假设我在芝加哥的国会和密歇根大道,我想穿过密歇根(6车道和中间带)。我会从-87.62440到-87.62413经度。如果对坐标使用双精度浮点,则可以轻松地为自己指定几个数字作为水印,而不会影响坐标的精度。请记住,大多数GPS装置的精度都不超过15英尺!(手机辅助GPS更精确。)@Sammitch任何超过小数点后5位的东西在赤道处都小于1米,请参见