@ error/constitute.c/ReadImage/453

我想创建一个验证码图片使用convert从ImageMagick。

我遵循,但有一些问题。

在我的linux shell:

convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png

错误是:

转换:not authorized adfgh @ error/constitute.c/ReadImage/453。 convert:缺少一个映像文件名./test.png @ 错误/ convert.c / ConvertImageCommand / 3015 < / p >

我的ImageMagick: Version:6.7.2-7,我用yum install ImageMagick安装它。

我笨。有什么建议吗?

151414 次浏览

注意:此解决方案和任何其他“编辑policy.xml”解决方案禁用针对ImageMagick中任意代码执行漏洞的安全措施。如果需要处理不能100%控制的输入,则应该使用不同的程序(而不是ImageMagick)。

如果您还在这里,您正在尝试编辑您完全控制、知道是安全的且用户无法编辑的图像。

yum安装了一个/etc/ImageMagick/policy.xml文件。它几乎不允许任何事情(为了安全性和保护您的系统不被ImageMagick调用重载)。

如果你得到如上所述的ReadImage错误,你可以将该行更改为:

<policy domain="coder" rights="read" pattern="LABEL" />

这应该能解决问题。

这个文件里面有很多文档,所以你应该读一下。例如,如果你需要更多的权限,你可以像这样组合它们:

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

...这比删除所有权限检查(即删除或注释该行)更可取。

注意:这个和其他答案中的解决方案涉及禁用用于修复任意代码执行漏洞的安全措施。例如,this ghostscript-relatedthis ubunu -related announcement。只有当convert的输入来自可信源时,才继续使用这些解决方案。

我使用ImageMagick在php (v.7.1)切片PDF文件的图像。

首先,我得到了如下错误:

异常类型:ImagickException

异常信息:未授权.....@错误/ constitute.c / ReadImage / 412

/etc/ImageMagick-6/policy.xml中进行一些更改后,我开始得到如下错误:

异常类型:ImagickException

异常信息:无法创建临时文件.....@ error/pdf.c/ReadPDFImage/465拒绝权限

我的解决:

在文件/etc/ImageMagick-6/policy.xml(或/etc/ImageMagick/policy.xml)中

  1. < p >注释行

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
    
  2. change line

    <policy domain="coder" rights="none" pattern="PDF" />
    

    <policy domain="coder" rights="read|write" pattern="PDF" />
    
  3. add line

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

Then restart your web server (nginx, apache).

我也有错误error/constitute.c/ReadImage/453时试图转换eps gif与图像魔法。我尝试了sNICkerssss提出的解决方案,但仍然有错误(虽然不同于第一个)e error/constitute.c/ReadImage/412 解决这个问题的方法是将read放到其他条目

 <policy domain="coder" rights="read" pattern="PS" />
<policy domain="coder" rights="read" pattern="EPS" />
<policy domain="coder" rights="read" pattern="PDF" />
<policy domain="coder" rights="read" pattern="XPS" />
<policy domain="coder" rights="read|write" pattern="LABEL" />

投票最高的答案(我没有足够的声誉在那里添加评论)建议注释掉MVG行,但请记住这一点:

cve - 2016 - 3714

ImageMagick支持".svg/。Mvg”文件,这意味着攻击者可以 用脚本语言编写代码,例如MSL (Magick scripting) Language)和MVG (Magick Vector Graphics),上传到服务器 伪装成图像文件,并迫使软件恶意运行 如上所述,在服务器端执行命令。例如,添加 在文件中执行命令并将其上传到使用 易受攻击的ImageMagick版本将导致运行该命令

.在服务器端输入“ls -la”

exploit.jpg:

push图形上下文viewbox 0 0 640 480 fill 'url(https://website.com/image.png"|ls "-la)' pop graphic-context

任何低于7.0.1-2或6.9.4-0的版本都有潜在的漏洞 受影响的各方应尽快升级到最新版本 ImageMagick版本。< / p >

Source

我多次使用ImageMagic convert命令将*.tif文件转换为*.pdf文件。

我不知道为什么,但今天我开始收到以下错误:

convert: not authorized `a.pdf' @ error/constitute.c/WriteImage/1028.

发出命令后:

convert a.tif a.pdf

在阅读以上答案后,我编辑了文件/etc/ImageMagick-6/policy.xml

改了句台词:

policy domain="coder" rights="none" pattern="PDF"

policy domain="coder" rights="read|write" pattern="PDF"

现在一切正常。

我有“ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28”

. Ubuntu 16.04.5 LTS

在我的Ubuntu 16.04系统最近更新后,我也开始得到这个错误时,试图运行转换。ps文件转换成pdf。

这个方法对我很有效:

在终端运行中:

sudo gedit /etc/ImageMagick-6/policy.xml
这将在gedit文本编辑器中打开policy.xml文件。如果没有,你的图像魔法可能被安装在不同的地方。 然后修改

rights="none"

rights="read | write"

PDF, EPS和PS行接近文件底部。保存并退出,然后图像魔法应该再次工作。

如果有人需要在安装后用一个命令来完成,运行这个!

sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml

只要删除/etc/ImageMagick/policy.xml文件。如。

rm /etc/<ImageMagick_PATH>/policy.xml

对于ImageMagick 6,它是:

sudo rm /etc/ImageMagick-6/policy.xml

在阅读了这里的一些建议并结合这些想法后,对我来说,以下修改/etc/ imagemagick -6/policy.xml是必要的:

<policy domain="coder" rights="read|write" pattern="PDF" />
< p >…Rights ="none"没有帮助. ...pattern="LABEL"是不必要的。 虽然我不使用大的png文件(只有~1 Mb),但内存限制的一些更改也是必要的:

<policy domain="resource" name="memory" value="2GiB"/>

(而不是256Mib),并且

<policy domain="resource" name="area" value="2GB"/>

(不是128 MB)

我在尝试将pdf转换为jpg时出现了这个错误,并使用此方法解决了这个问题: sudo vi /etc/ imagemagick */policy.xml

.xml

变化:

策略域="coder"权限="none"模式="PDF"

:

policy domain="coder" rights="read|write" pattern="PDF"

来源:http://realtechtalk.com/ImageMagick_Convert_PDF_Not_Authorized-2217-articles

如果您不需要通过同一工具处理光栅文件和PDF/PS/EPS,请不要放松ImageMagick的安全性。

相反,保持你的web应用程序完整的防御深度,检查你的Ghostscript已经为所有已知的-dSAFER漏洞打了补丁,然后直接调用它。

gs -dSAFER -r300 -sDEVICE=png16m -o document-%03d.png document.pdf
  • -dSAFER选择你脱离遗留兼容性“运行Postscript将完全权限与外部世界交互作为一个图灵完备的编程语言”模式。
  • -r300将期望的DPI设置为300(默认为72)
  • -sDEVICE指定输出格式(有关其他选项,请参阅手册中的设备部分。)
  • -o-dBATCH -dNOPAUSE -sOutputFile=的缩写
  • Ghostscript手册的本节给出了多文件文件名输出的一些示例格式,但对于实际的语法定义,它指向C printf (3)函数的文档。

如果你渲染EPS文件,添加-dEPSCrop,这样它就不会填充你的输出到页面大小,并使用-sDEVICE=pngalpha来获得透明的背景。