减少从AJAX/JSON服务获取数据的技术

减少从AJAX/JSON服务获取数据的技术,ajax,security,web-services,json,Ajax,Security,Web Services,Json,我想知道是否有人遇到过任何技术来减少通过服务器上的JSON类型服务(旨在提供AJAX功能)暴露的数据被外部代理获取的机会 在我看来,如果你说一个Flash客户端在使用数据,那么问题就不那么难了。然后,您可以将加密数据发送到客户机,客户机将知道如何对其进行解密。但是,由于Javascript源代码的开放性,使用AJAX似乎不可能使用相同的方法 有人在这里实施过聪明的技术吗 无论采用何种方法,它都应该允许真正的AJAX函数使用数据 请注意,我在这里并不是说要保护“敏感”信息,奇怪的记录泄漏不是问题。

我想知道是否有人遇到过任何技术来减少通过服务器上的JSON类型服务(旨在提供AJAX功能)暴露的数据被外部代理获取的机会

在我看来,如果你说一个Flash客户端在使用数据,那么问题就不那么难了。然后,您可以将加密数据发送到客户机,客户机将知道如何对其进行解密。但是,由于Javascript源代码的开放性,使用AJAX似乎不可能使用相同的方法

有人在这里实施过聪明的技术吗

无论采用何种方法,它都应该允许真正的AJAX函数使用数据

请注意,我在这里并不是说要保护“敏感”信息,奇怪的记录泄漏不是问题。相反,我考虑的是停止一种情况,即整个数据库被机器人(一次性或逐渐地)占用


谢谢。

< P>如果你有一个内部MycCurk框,你可以考虑使用一个技术,为每个IP创建一个条目,以一个小时的过期时间到达服务器。然后在每次IP到达AJAX端点时增加该值。如果该值超过某个特定阈值,请断开连接。如果该值在Memcached中过期,您就知道它不会被“胡涂掉”。

这不是一个有概念证明的具体答案,但可能是您的起点。您可以创建一个提供加密/解密功能的javascript函数。javascript需要动态构建,并且您需要包含一个会话特有的加密密钥。在服务器端,您将拥有一个加密服务,它使用会话中的密钥在交付JSON之前对JSON进行加密

这至少可以防止有人监听你的网络流量,从你的数据库中提取信息


不过我支持kdgergory,听起来你的数据太公开了。

防止机器人窃取你数据的第一件事不是技术,而是法律。首先,确保你在网站的使用条款中使用了正确的语言,你试图阻止的内容实际上是不允许的,从法律角度来看是可以辩护的。其次,确保在设计技术策略时考虑到法律问题。例如,在美国,如果您将数据放在身份验证屏障后面,而攻击者窃取了数据,则很可能是一种攻击。第三,找一位律师,他可以就IP和DMCA问题为您提供建议。。。StackOverflow上的好人还不够。:-)

现在,关于技术:

一个合理的解决方案是要求用户在访问敏感的Ajax调用之前进行身份验证。这使您可以简单地监视Ajax调用的每个用户使用情况,并(手动或自动)取消在特定时间段内发出过多请求的任何用户的帐户。(或者,如果您试图防御涓涓细流方法,则请求总数过多)

当然,这种方法很容易受到自动注册新“用户”的复杂机器人的攻击,但是有了相当好的验证码实现,构建这种机器人相当困难。(见第页的“规避”一节)

如果您试图保护公共数据(无身份验证),那么您的选择将非常有限。正如其他答案所指出的,您可以尝试基于IP地址的限制(并与大型公司代理用户发生冲突),但复杂的攻击者可以通过分配负载来绕过这一限制。还有likley复杂的软件,它可以观察请求时间、请求模式等,并试图发现机器人。例如,扑克网站在这方面花费了很多时间。但别指望这些系统便宜。您可以做的一件简单的事情是挖掘web日志(例如使用),找到访问站点的前N个IP地址,然后对它们进行反向IP查找。有些将是合法的公司或ISP代理。但是,如果你在名单中认出了某个竞争对手的域名,你可以屏蔽他们的域名,或者与你的律师联系

除了盗窃前的防御,你可能还想考虑插入一个“蜜罐”:故意伪造信息,以便以后追踪。例如,地图制造商就是这样抓住了plaigarism的:他们在地图中插入一条假街道,然后查看其他哪些地图显示了相同的假街道。虽然这并不能阻止有决心的人吸走你的所有数据,但它确实可以让你在以后发现谁在使用你的数据。这可以通过在文本输出中嵌入唯一的文本字符串来实现,然后稍后在Google上搜索这些字符串(假设您的数据可以在其他公共网站上重复使用)。如果你的数据是HTML或图像,你可以包含一个指向你网站的图像,你可以跟踪谁在下载它,并寻找你可以用来阻止免费下载者的模式

请注意,另一个答案中提到的javascript加密方法不适用于未经身份验证的会话——攻击者只需下载javascript并像普通浏览器一样运行即可。故事的寓意:公共数据基本上是站不住脚的。如果您想保护数据,请将其置于身份验证屏障之后

这是显而易见的,但是如果你的数据可以被搜索引擎公开搜索,那么你俩都需要一个非AJAX的解决方案(Google不会读取你的AJAX数据!),并且你会想要标记这些页面,这样你的数据就不会出现在Google的缓存中。您可能还需要一个搜索引擎爬虫IP地址的白名单,您可以将其放入搜索引擎可爬虫页面(您可以与Google、Bing、Yahoo等合作获取这些内容),否则恶意机器人可能只是模仿Google并获取您的数据

最后,我想回应上面的@kdgregory:确保威胁足够真实,值得付出所需的努力。许多公司高估了i