ImageMagick 安全策略“PDF”阻止转换

新手上路,请多包涵

Imagemagick 安全策略似乎不允许我执行从 pdf 到 png 的转换。转换其他扩展似乎正在工作,只是不是来自 pdf。自安装以来,我没有更改任何 imagemagick 设置……如果操作系统很重要,我正在使用 Arch Linux。

 user@machine $ convert -density 300 -depth 8 -quality 90 input.pdf output.png
convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert: no images defined `output.png' @ error/convert.c/ConvertImageCommand/3288.

原文由 T. Zack Crawford 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

在 Ghostscript 修复之后,ImageMagick 的更改被保留,因为应用程序(尤其是 Web 应用程序)经常将任意用户提供的文件提供给 ImageMagick,并不总是正确地强制执行格式限制,而且,因为 Postscript(PDF 使用)是一个图灵完备的编程在沙箱中运行的语言,总是有可能在沙箱中出现另一个漏洞。

最好保留配置,以便 ImageMagick 拒绝处理需要运行程序的文件,而是在您 有意 允许 Postscript 渲染时直接调用 Ghostscript。

这将通过这样的 Ghostscript 命令来完成:

 gs -dSAFER -r600 -sDEVICE=pngalpha -o foo.png myfile.pdf

是的,这是 ImageMagic 调用的 GhostScript 命令的变体。 (参见 ImageMagick 的 delegates.xml-o-dBATCH -dNOPAUSE -sOutputFile= 的简写)

重要的是 ImageMagick 保持锁定状态,您无需调用中间程序,并且您可以更好地控制渲染参数。 (例如, -r600 是要渲染的 DPI,并且更改 -sDEVICE=pngalpha 允许您直接渲染为所需的格式)

原文由 ssokolow 发布,翻译遵循 CC BY-SA 4.0 许可协议

嗯,我加了

  <policy domain="coder" rights="read | write" pattern="PDF" />

就在 </policymap>/etc/ImageMagick-7/policy.xml 之前,这使它再次工作,但不确定其安全隐患。

原文由 Stefan Seidel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题