我想知道是否有人遇到任何技术来减少通过服务器上的JSON类型服务(旨在提供AJAX功能)暴露的数据被外部代理收获的机会。
在我看来,如果您说Flash客户端正在使用数据,问题并不那么困难。然后,您可以将加密数据发送到客户端,客户端将知道如何解密它。但是,由于Javascript源的开放性,使用AJAX似乎不可能采用相同的方法。
有人在这里实施了一项聪明的技术吗?
无论采用何种方法,它仍然应该允许真正的AJAX函数使用数据。
请注意,我并不是真的在谈论保护“敏感”信息,奇怪的记录泄漏不是问题。相反,我正在考虑停止整个数据库被机器人(无论是一次性还是逐渐地)覆盖的情况。
感谢。
答案 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)
以下是各种建议:
答案 6 :(得分:0)
Bots通常不会解析Javascript,因此您的ajax代码不会立即执行。如果他们甚至这样做,机器人通常也不会保持会话/ cookie。知道这一点,如果在没有有效会话/ cookie的情况下调用它,你可以拒绝该请求(这显然是事先在服务器端通过父页面上的请求设置的)。
但这并不能保护您免受人类危害。最安全的方法是使用登录名/密码限制对用户的访问。如果这不是你的意图,那么你必须忍受这是一个公共应用程序的事实。当然,您可以使用IP地址和用户扫描日志和主要黑名单,但这种情况非常糟糕。