(到目前为止,这个问题纯粹是理论上的,因为我们已经找到了一种避免它的方法。但是,当它出现时我无法解决它。)
使用Java,我想通过SSH FTP以固定的时间间隔从单个固定服务器上发现和下载文件 远程服务器,协议,时间和文件不受我的控制。 远程服务器由受信任的源控制。
我目前正在使用ls
和get
的Java实现来下载文件。
我的客户非常注重安全,因此他希望尽可能多地防止技术攻击角度。
在考虑恶意实体模仿或控制远程服务器的可能性时,我注意到他们可能会使用无限列表文件回复ls
的实现替换通常的服务器,或者用无限的字节流回复get
。
在某些时候,我的记忆或硬盘会破坏我的程序崩溃。
假设我不知道文件的大小,是否有办法在不停止合法(但大量)下载的情况下检测并防止此类攻击? 我正在考虑事先检查文件/文件大小的数量,但即使这样,攻击者也可能在我进行此类检查后才能触发攻击。
答案 0 :(得分:1)
在考虑恶意实体冒充或控制远程服务器的可能性时。
除非SSH的客户端实现存在缺陷或者可信站点的私钥泄露或破解,否则不应该冒充该站点。
假设我不知道文件的大小,是否有办法在不停止合法(但很大)下载的情况下检测并防止此类攻击?
我不这么认为。
我正考虑事先检查文件数/文件大小......
问题在于如何区分“合法但大型”下载与受感染服务器的大型下载?
我认为解决方案是对下载大小设置限制。
另外需要注意的是,即使坏人确实欺骗你进行“无限”下载:
答案 1 :(得分:1)
处理此类问题的最佳方法是定义一组规则,如果失败,将向某人发送警报(通过电子邮件或任何其他方式)。
实施例: 如果您从一个文件下载了超过30G的内容,可能会出现问题,让我们有人对此进行审核。
如果要下载超过10亿个文件,请提醒某人......
您可能还希望实现一些统计信息来检测ls和get的可能问题。