【发布时间】:2016-02-09 16:42:59
【问题描述】:
我正在将图像上传到一个网站,我发现了当允许上传png 文件(和其他一些文件)时可能发生的这些解压炸弹攻击。由于我要更改上传的图像,我想确保我不会成为这次攻击的受害者。因此,在检查png 文件是否为炸弹时,我是否可以只读取文件的标题并确保宽度和高度不超过设定的限制,例如 4000x4000 或其他什么?这是一个有效的方法吗?或者有什么更好的方法?
【问题讨论】:
-
你应该在网络服务器层做。您使用什么来托管您的网站?
-
Glenn Randers-Pehrson 在Defending Libpng Applications Against Decompression Bombs 中描述了许多防御策略,但本文假设您正在使用
libpng编译自己的软件。不过,仍然值得一读。 -
@Jongware 我已经阅读了它,但我没有使用那里提到的任何东西。如果可能的话,我只需要一种方法来确保上传的文件不是使用我的后端语言的炸弹
-
@Jongware 正确,只有宽度和高度是不够的。也可能存在过大的 iCCP 块、zTXt、块和 iTXt 块。默认情况下,libpng 在一定程度上防御这些。 ImageMagick 中的图像宽度和高度限制来自命令行“-limit”选项,我想这也可以通过各种 ImageMagick API 来传达。
-
ImageMagick 的默认限制非常大:“convert -list resource”表示资源限制:宽度:214.7MP 高度:214.7MP 区域:8.135GP,因此您需要使用 -limit 选项或它的等价物。
标签: security image-processing imagemagick png