减少AJAX / JSON服务数据收集的技术

时间:2009-11-19 12:54:42

标签: ajax security web-services json

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

在我看来,如果您说Flash客户端正在使用数据,问题并不那么困难。然后,您可以将加密数据发送到客户端,客户端将知道如何解密它。但是,由于Javascript源的开放性,使用AJAX似乎不可能采用相同的方法。

有人在这里实施了一项聪明的技术吗?

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

请注意,我并不是真的在谈论保护“敏感”信息,奇怪的记录泄漏不是问题。相反,我正在考虑停止整个数据库被机器人(无论是一次性还是逐渐地)覆盖的情况。

感谢。

7 个答案:

答案 0 :(得分:7)

答案 1 :(得分:7)

首先,我想澄清一下:

  

在我看来,问题不在于此   如果你说一个Flash就太难了   客户消费数据。那么你   可以将加密数据发送到   客户,谁会知道如何   解密它。似乎是同样的方法   但由于AJAX不可能   Javascrip的开放性   源。

很明显,信息被加密发送到闪存客户端&对于攻击者来说,从你的flash编译程序中找出用于此目的的东西并不是那么难 - 复制&获取所有数据。

如果数据确实具有您正在考虑的价值,您可以依靠上述内容。

如果这是公开信息,请接受&不要打击它 - 而是找到利用它的方法。

如果这是您仅向一组用户公开的信息,请确保您具有相应的身份验证/安全通信。跟踪其他人所说的用法,并采取措施对其采取行动,

答案 2 :(得分:1)

如果您有一个内部Memcached框,您可以考虑使用一种技术,您可以在每小时到期时为每个到达服务器的IP创建一个条目。然后每次IP命中AJAX端点时递增该值。如果该值超过特定阈值,则炒掉连接。如果值在Memcached中到期,您就知道它没有被“甩掉”。

答案 3 :(得分:1)

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

这至少可以防止有人收听您的网络流量,从而将数据从您的数据库中拉出来。

虽然我和kdgergory在一起,但听起来你的数据太开放了。

答案 4 :(得分:1)

Further thoughts on hindering screen scraping中列出了一些技巧。

如果您使用PHP,Bad behavior是一个很好的帮助工具。如果您不使用PHP,它可以提供有关如何过滤的一些想法(请参阅How it works页面)。

Incredibill's blog提供了很好的提示,要阻止的用户代理/ IP范围列表等......

答案 5 :(得分:1)

以下是各种建议:

  1. 与每个AJAX请求一起发出兑换所需的令牌。将令牌过期。
  2. 跟踪来自每个客户端的查询数量,并根据您网站的预期正常使用情况限制过度使用。
  3. 查找使用中的模式,例如顺序查询,请求中的峰值,或者比人类可能发生的查询更快的查询。
  4. 检查用户代理。许多机器人不能完全复制浏览器的用户代理信息,您可以使用此方法消除对数据的编程抓取。
  5. 一旦超出请求阈值,更改网站的前端组件以重定向到验证码(或其他人工验证机制)。
  6. 修改您的逻辑,以便以几种不同的方式返回respsonse数据,以使解析所需的代码复杂化。
  7. 欺骗您的客户端javascript。
  8. 阻止违规客户的IP。

答案 6 :(得分:0)

Bots通常不会解析Javascript,因此您的ajax代码不会立即执行。如果他们甚至这样做,机器人通常也不会保持会话/ cookie。知道这一点,如果在没有有效会话/ cookie的情况下调用它,你可以拒绝该请求(这显然是事先在服务器端通过父页面上的请求设置的)。

但这并不能保护您免受人类危害。最安全的方法是使用登录名/密码限制对用户的访问。如果这不是你的意图,那么你必须忍受这是一个公共应用程序的事实。当然,您可以使用IP地址和用户扫描日志和主要黑名单,但这种情况非常糟糕。