Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止无限下载?_Java_Security_Ssh_Sftp - Fatal编程技术网

Java 如何防止无限下载?

Java 如何防止无限下载?,java,security,ssh,sftp,Java,Security,Ssh,Sftp,(到目前为止,这个问题纯粹是理论性的,因为我们已经找到了避免它的方法。但是,在它出现的时候,我无法解决它。) 使用Java,我希望以固定的时间间隔通过SSH FTP从单个固定服务器发现并下载文件。 远程服务器、协议、时间和文件不在我的控制范围之内。 远程服务器由受信任的源控制 我目前正在使用ls和get的Java实现来下载文件 我的客户很有安全意识,所以他希望尽可能多地防止技术攻击 在考虑恶意实体模仿或控制远程服务器的可能性时,我注意到,它们可能会用一个实现来取代普通服务器,该实现使用无限的文件

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

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

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

我的客户很有安全意识,所以他希望尽可能多地防止技术攻击

在考虑恶意实体模仿或控制远程服务器的可能性时,我注意到,它们可能会用一个实现来取代普通服务器,该实现使用无限的文件列表回复
ls
,或者使用无限的字节流回复
get
。 在某个时刻,我的内存或硬盘会崩溃,我的程序也会崩溃

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

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

除非SSH的客户端实现存在缺陷,或者受信任站点的私钥被泄漏或破解,否则不可能模拟该站点

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

我不这么认为

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

问题是如何区分“合法但较大”的下载和来自受损服务器的较大下载


我认为解决办法是限制下载量

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

  • 这实际上是一种拒绝服务攻击,而不是具有直接安全后果的攻击
  • 有更简单、更有效的方法可以发起拒绝服务攻击
  • 下载量并不是无限的。由于网络问题、系统重新启动等,连接最终会中断,或者有人会注意到下载需要很长时间

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

    例如: 如果您从一个文件中下载了超过30G的内容,可能是出了问题,让我们有人来回顾一下

    如果要下载的文件超过10亿,请通知某人

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