|
|
1
7
首先,我想澄清一下:
很明显,信息被加密发送到Flash客户机,攻击者很容易从您的Flash编译程序中找到用于此操作的内容-复制并获取所有数据。 如果数据恰好具有您正在思考的值,那么您可以依赖上面的内容。 如果这是公共信息,请接受这一点,不要与之抗争,而是找到利用它的方法。 如果这是您只向一组用户公开的信息,请确保您具有相应的身份验证/安全通信。如其他人所说,跟踪使用情况,并采取相应措施, |
|
|
2
7
阻止僵尸程序窃取你的数据的第一件事不是技术,而是合法的。首先,确保你的网站在使用条款中使用了正确的语言,从法律的角度来看,你试图阻止的内容实际上是不允许的,并且是可以辩护的。第二,确保在设计技术策略时考虑到了法律问题。例如,在美国,如果您将数据置于身份验证屏障之后,而攻击者窃取了数据,则很可能是 violation of the DMCA law .第三,找一个能在知识产权和DMCA问题上为你提供建议的律师……StackOverflow上的好人还不够。:-) 现在,关于技术: 一个合理的解决方案是要求用户在能够访问敏感的Ajax调用之前进行身份验证。这允许您简单地监视Ajax调用的每用户使用情况,并(手动或自动)取消在特定时间段内发出过多请求的任何用户的帐户。(或者如果您试图防御涓涓细流的方法,则请求总数太多)。 当然,这种方法容易受到自动注册新“用户”的复杂僵尸的攻击,但是有了相当好的captcha实现,很难构建这种僵尸。(参见“规避”一节 http://en.wikipedia.org/wiki/CAPTCHA ) 如果你想保护 公众的 数据(没有身份验证),那么您的选项就更有限了。正如其他答案所指出的,您可以尝试基于IP地址的限制(并与大型企业代理用户发生冲突),但复杂的攻击者可以通过分布负载来绕过这一限制。还有像Likley这样的复杂软件,它可以监视请求时间、请求模式等,并试图发现僵尸。例如,扑克网站在这方面花了很多时间。但不要指望这些系统便宜。你可以做的一件简单的事情就是挖掘你的网络日志(例如使用 Splunk )找到你网站上的前N个IP地址,然后对它们进行反向IP查找。一些将是合法的公司或ISP代理。但是,如果你在名单中识别出一个竞争对手的域名,你可以封锁他们的域名或者跟你的律师联系。 除了盗窃前的防御之外,您可能还需要考虑插入一个“蜜罐”:故意伪造信息,以便以后跟踪。例如,地图制造商就是通过这种方式来抓住浪费的:他们在地图中插入一条假街道,然后看看其他哪些地图显示的是同一条假街道。虽然这并不能阻止有决心的人吸走你所有的数据,但它可以让你稍后发现谁在使用你的数据。这可以通过在文本输出中嵌入唯一的文本字符串来实现,然后在Google上搜索这些字符串(假设您的数据在另一个公共网站上可重用)。如果您的数据是HTML或图像,您可以包括一个指向您的网站的图像,您可以跟踪谁下载了它,并寻找模式,您可以使用它来击败那些免费下载者。 请注意,其他答案之一中提到的javascript加密方法对于未经验证的会话不起作用——攻击者只需下载javascript并像普通浏览器一样运行它。故事的寓意:公共数据本质上是不可辩驳的。如果要保护数据,请将其置于身份验证屏障之后。 这是显而易见的,但是如果你的数据可以被搜索引擎公开搜索,你将需要一个非Ajax的解决方案(Google不会读取你的Ajax数据!)你要把这些页标出来 NOARCHIVE 所以你的数据不会出现在谷歌的缓存中。你可能还需要一个搜索引擎爬虫IP地址的白名单,你可以进入你的搜索引擎爬虫网页(你可以与谷歌,必应,雅虎等合作,以获得这些),否则恶意机器人可以简单地模仿谷歌,并获得你的数据。 最后,我要回应上面的@kGregory:确保威胁是真实的,值得付出所需的努力。许多公司高估了其他人(合法客户和恶毒行为者)对自己业务的兴趣。可能是你的情况很奇怪,你有特别重要的数据,它特别有价值获得,它必须在没有认证的情况下公开访问,如果有人窃取你的数据,你的法律资源将受到限制。但所有这些都是不寻常的。 另一种思考这个问题的方法,可能适用于你的案例,也可能不适用于你的案例。有时更改数据的工作方式更容易,从而避免了对数据的安全保护。例如,您是否可以将数据以某种方式绑定到站点上的服务,以便数据在与代码一起使用时不会非常有用。或者你可以在里面嵌入广告,这样无论在什么地方你都能得到报酬?等等。我不知道这些缓解措施是否适用于您的案例,但许多企业已经找到了在互联网上免费赠送东西(鼓励而不是阻止广泛的再分销)并仍然赚钱的方法,因此在您的案例中,混合的免费/支付策略可能(或不可能)是可能的。 |
|
3
1
如果您有一个内部memcached框,您可以考虑使用一种技术,在这种技术中,您可以为每一个IP创建一个条目,该条目将在一小时内到达您的服务器。然后在每次IP到达Ajax端点时增加该值。如果值超过特定阈值,则重新建立连接。如果值在memcached中过期,您知道它不会被“hoovered away”。 |
|
|
4
1
这不是一个有概念证明的具体答案,但可能是你的起点。您可以创建一个提供加密/解密功能的javascript函数。Javascript需要动态构建,并且您将包含会话独有的加密密钥。在服务器端,您将拥有一个加密服务,它使用会话中的密钥在传递JSON之前对其进行加密。 这至少可以防止有人监听你的网络流量,从你的数据库中提取信息。 不过,我和Kdgergory在一起,听起来你的数据太开放了。 |
|
|
5
1
一些技术列在 Further thoughts on hindering screen scraping . 如果你使用PHP, Bad behavior 是一个很好的帮助工具。如果您不使用PHP,它可以提供一些关于如何过滤的想法(请参见 How it works 页)。 Incredibill's blog 正在给出好的提示、要阻止的用户代理/IP范围列表等… |
|
|
6
1
以下是各种建议:
|
|
|
7
0
僵尸通常不解析javascript,因此Ajax代码不会立即执行。如果他们真的这样做了,僵尸通常也不维护会话/cookie。知道这一点后,如果调用请求时没有有效的会话/cookie(显然是由父页上的请求预先在服务器端设置的),则可以拒绝该请求。 但这并不能保护你免受人身伤害。最安全的方法是限制使用登录名/密码的用户访问。如果这不是你的意图,那么你必须接受这样一个事实 公众的 应用程序。当然,您可以使用IP地址和用户代理扫描日志和维护黑名单,但这是极端的。 |
|
|
Michael · 某些Windows客户端上的命名管道安全问题 1 年前 |
|
|
adamency · 是否可以从Go二进制文件的源代码中检索字符串? 1 年前 |
|
|
AlboSimo · PayPal Api密钥安全 1 年前 |