Java 如何防止无限下载?
(到目前为止,这个问题纯粹是理论性的,因为我们已经找到了避免它的方法。但是,在它出现的时候,我无法解决它。) 使用Java,我希望以固定的时间间隔通过SSH FTP从单个固定服务器发现并下载文件。Java 如何防止无限下载?,java,security,ssh,sftp,Java,Security,Ssh,Sftp,(到目前为止,这个问题纯粹是理论性的,因为我们已经找到了避免它的方法。但是,在它出现的时候,我无法解决它。) 使用Java,我希望以固定的时间间隔通过SSH FTP从单个固定服务器发现并下载文件。 远程服务器、协议、时间和文件不在我的控制范围之内。 远程服务器由受信任的源控制 我目前正在使用ls和get的Java实现来下载文件 我的客户很有安全意识,所以他希望尽可能多地防止技术攻击 在考虑恶意实体模仿或控制远程服务器的可能性时,我注意到,它们可能会用一个实现来取代普通服务器,该实现使用无限的文件
远程服务器、协议、时间和文件不在我的控制范围之内。 远程服务器由受信任的源控制 我目前正在使用
ls
和get
的Java实现来下载文件
我的客户很有安全意识,所以他希望尽可能多地防止技术攻击
在考虑恶意实体模仿或控制远程服务器的可能性时,我注意到,它们可能会用一个实现来取代普通服务器,该实现使用无限的文件列表回复ls
,或者使用无限的字节流回复get
。
在某个时刻,我的内存或硬盘会崩溃,我的程序也会崩溃
假设我不知道文件的大小,有没有办法在不停止合法(但大量)下载的情况下检测和防止此类攻击?我想事先检查文件数量/文件大小,但即使这样,攻击者也只有在我进行了此类检查后才能触发攻击 在考虑恶意实体模仿或控制远程服务器的可能性时 除非SSH的客户端实现存在缺陷,或者受信任站点的私钥被泄漏或破解,否则不可能模拟该站点 假设我不知道文件的大小,有没有办法在不停止合法(但大量)下载的情况下检测和防止此类攻击 我不这么认为 我在考虑事先检查文件数量/文件大小 问题是如何区分“合法但较大”的下载和来自受损服务器的较大下载
我认为解决办法是限制下载量 另一件需要注意的是,即使坏人欺骗你进行“无限”下载:
处理此类问题的最佳方法是定义一组规则,如果失败,将向某人发送警报(通过电子邮件或任何其他方式) 例如: 如果您从一个文件中下载了超过30G的内容,可能是出了问题,让我们有人来回顾一下 如果要下载的文件超过10亿,请通知某人 您可能还希望实现一些统计信息来检测ls和get可能存在的问题