0

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

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

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

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

在考虑恶意实体冒充或控制远程服务器的可能性时,我注意到他们可能会用一个ls用无限的文件列表回复的实现替换普通的服务器,或者get用无限的字节流回复. 在某些时候,我的内存或硬盘驱动器会损坏并且我的程序崩溃。

假设我不知道文件可能占用的大小,有没有办法在不停止合法(但大)下载的情况下检测和防止此类攻击?
我正在考虑事先检查文件数量/文件大小,但即便如此,攻击者也只有在我进行此类检查后才能触发他的攻击。

4

2 回答 2

1

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

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

假设我不知道文件可能占用的大小,有没有办法在不停止合法(但大)下载的情况下检测和防止此类攻击?

我不这么认为。

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

问题是您如何区分“合法但大”的下载和来自受感染服务器的大下载?


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

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

  1. 这实际上是一种拒绝服务攻击,而不是具有直接安全后果的攻击。
  2. 有更简单、更有效的方式来发起拒绝服务攻击。
  3. 下载不会真正无限。由于网络问题、系统重启等,连接最终会断开,或者有人会注意到下载需要很长时间。
于 2012-10-17T13:49:00.373 回答
1

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

例子:如果你从一个文件下载了超过30G,可能有问题,让我们来看看这个。

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

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

于 2012-10-17T13:49:57.417 回答