php gd保护免受图像减压炸弹

时间:2016-03-09 20:01:49

标签: php nginx gd

想象一下zip bomb,但是处于PNG风格。

在gd中进行任何类型的图像处理时,几乎不可避免的是,在某些时候,图像通过imagecreatefromjpeg和朋友以解压缩的形式完全保存在内存中,即使对于像调整大小这样的简单操作也是如此。 getimagesize仅从元数据中提取信息,这些信息可能不可靠。

我们有哪些工具可以保护自己免受此类滥用,例如缩小图片以创建缩略图?

我想到了:

  • 使服务器只接受未压缩的BMP或TIFF图像并设置纯粹的上传大小限制,使用客户端javascript将jpg和png文件转换为bmp,然后再发送。一般来说,表现非常差。
  • 主动减少负责执行操作的脚本的可用内存,以便在图像变得太大(如16 MB最大内存)时因内存不足而失败。糟糕的坏事。

imagescale和类似的函数是否需要原始图像存在于解压缩的内存中?

还有其他提示吗?

0 个答案:

没有答案