安全使用ImageMagick转换

时间:2014-08-19 15:07:14

标签: php security imagemagick

我打算使用以下内容来调整动画GIF的大小。

是否建议在传递给convert之前对文件进行其他检查?文件名在上传脚本中自动生成。

$filename = escapeshellarg($filename);
exec('convert image.gif -resize 150x400^ -gravity center -extent 150x400 ' . $filename);

2 个答案:

答案 0 :(得分:2)

  1. 您应该使用convert预先设置要执行的可执行文件的绝对路径。

  2. 您应该确信您可以信任要执行的convert命令。

  3. 您应该在您要处理的输入文件的前面添加绝对路径。

  4. 您应该检查要处理的输入文件的文件大小,(魔术)文件格式,像素尺寸和图层画布几何。例如:

    identify                                                           \
      -format "%f : bytes=%b format=%m width=%w height=%h canvas=%g\n" \
       /path/to/input/image
    

    (熟悉%f%b%m%w%h%g <的含义em> here 。)

  5. 您应该将绝对路径添加到要写入的输出文件中。

  6. 您应该非常确定$filename不包含不需要的字符。

答案 1 :(得分:0)

如果文件名不是来自用户输入(甚至是其中的一部分)并且您使用随机字符或数据(如用户ID)生成文件名,并且您可以绝对确定其中没有不需要的数据或字符,则不需要不用担心。