如何防止无限下载?

时间:2012-10-17 13:31:21

标签: java security ssh sftp

(到目前为止,这个问题纯粹是理论上的,因为我们已经找到了一种避免它的方法。但是,当它出现时我无法解决它。)

使用Java,我想通过SSH FTP以固定的时间间隔从单个固定服务器上发现和下载文件 远程服务器,协议,时间和文件不受我的控制。 远程服务器由受信任的源控制。

我目前正在使用lsget的Java实现来下载文件。

我的客户非常注重安全,因此他希望尽可能多地防止技术攻击角度。

在考虑恶意实体模仿或控制远程服务器的可能性时,我注意到他们可能会使用无限列表文件回复ls的实现替换通常的服务器,或者用无限的字节流回复get。 在某些时候,我的记忆或硬盘会破坏我的程序崩溃。

假设我不知道文件的大小,是否有办法在不停止合法(但大量)下载的情况下检测并防止此类攻击? 我正在考虑事先检查文件/文件大小的数量,但即使这样,攻击者也可能在我进行此类检查后才能触发攻击。

2 个答案:

答案 0 :(得分:1)

  

在考虑恶意实体冒充或控制远程服务器的可能性时。

除非SSH的客户端实现存在缺陷或者可信站点的私钥泄露或破解,否则不应该冒充该站点。

  

假设我不知道文件的大小,是否有办法在不停止合法(但很大)下载的情况下检测并防止此类攻击?

我不这么认为。

  

我正考虑事先检查文件数/文件大小......

问题在于如何区分“合法但大型”下载与受感染服务器的大型下载?


我认为解决方案是对下载大小设置限制。

另外需要注意的是,即使坏人确实欺骗你进行“无限”下载:

  1. 这实际上是一种拒绝服务攻击,而非直接安全后果的攻击。<​​/ li>
  2. 启动拒绝服务攻击有更简单,更有效的方法。
  3. 下载不会真正无限。由于网络问题,系统重启等原因,连接最终会丢失,或者有人会注意到下载需要很长时间。

答案 1 :(得分:1)

处理此类问题的最佳方法是定义一组规则,如果失败,将向某人发送警报(通过电子邮件或任何其他方式)。

实施例: 如果您从一个文件下载了超过30G的内容,可能会出现问题,让我们有人对此进行审核。

如果要下载超过10亿个文件,请提醒某人......

您可能还希望实现一些统计信息来检测ls和get的可能问题。