Security 如何检查png文件是否为';这是一个减压炸弹

Security 如何检查png文件是否为';这是一个减压炸弹,security,image-processing,imagemagick,png,Security,Image Processing,Imagemagick,Png,我正在玩图像上传到一个网站的游戏,我发现当允许上传png文件(以及其他一些文件)时,可能会发生这些解压炸弹攻击。因为我要更改上传的图像,我想确保我不会成为这次攻击的受害者。因此,当检查一个png文件是否是炸弹时,我是否可以读取文件的标题并确保宽度和高度不超过设置的限制,比如4000x4000或其他什么?这是一种有效的方法吗?或者更好的方法是什么?除了较大的宽度和高度外,减压炸弹还可能有过大的iCCP块、zTXt、块和iTXt块。默认情况下,libpng在某种程度上保护了这些 您的“imagema

我正在玩图像上传到一个网站的游戏,我发现当允许上传
png
文件(以及其他一些文件)时,可能会发生这些解压炸弹攻击。因为我要更改上传的图像,我想确保我不会成为这次攻击的受害者。因此,当检查一个
png
文件是否是炸弹时,我是否可以读取文件的标题并确保宽度和高度不超过设置的限制,比如4000x4000或其他什么?这是一种有效的方法吗?或者更好的方法是什么?

除了较大的宽度和高度外,减压炸弹还可能有过大的iCCP块、zTXt、块和iTXt块。默认情况下,libpng在某种程度上保护了这些

您的“imagemagick”标签表示您正在询问如何使用imagemagick。ImageMagick的默认宽度和高度限制非常大:“convert-list resource”说

资源限制:宽度:214.7MP高度:214.7MP面积:8.135GP

ImageMagick中的图像宽度和高度限制来自命令行“-limit”选项,我认为它也可以通过各种ImageMagick API中的一些等效指令来传递。ImageMagick继承了libpng对iCCP块等的限制


在IHDR块中伪造较小的宽度和高度值不会欺骗libpng或ImageMagick。他们只是发出“额外压缩数据”警告,跳过IDAT数据的其余部分,而不进行解压缩。

您应该在web服务器层执行此操作。你用什么来主持你的网站?Glenn Randers Pehrson在中描述了许多防御策略,但本文假设你正在使用
libpng
编译自己的软件。不过还是值得一读。@Jongware我已经读过了,但我并没有使用这里提到的任何东西。我只是需要一种方法,以确保上传的文件不是一个炸弹使用我的后端语言,如果它是可能的course@Jongware正确,仅仅宽度和高度是不够的。也可能存在过大的iCCP块、zTXt、块和iTXt块。默认情况下,libpng在某种程度上保护了这些。ImageMagick中的图像宽度和高度限制来自命令行“-limit”选项,我认为它也可以通过各种ImageMagick API传递。ImageMagick的默认限制非常大:“转换-列表资源”表示资源限制:宽度:214.7MP高度:214.7MP面积:8.135GP,所以你需要使用-limit选项或者它的等价物。