security - 如何使用 ImageMagick 测试接收到的输入是否是图像(出于安全目的)?

标签 security imagemagick

想象一个环境,用户可以通过从他们的电脑上传图像或引用远程 URL 将图像上传到网站。

作为某些安全检查的一部分,我想确保引用的对象确实是图像。

对于远程 URL,我当然会检查内容类型,但这并不是万无一失的。

我想我可以使用 ImageMagick 来完成这项任务。也许执行 ImageMagick.identify() 方法,如果没有返回错误,则返回类型是 JPG|GIF| 等。内容是图像。 (在快速检查中,我注意到 TXT 文件也被正确识别,因此我必须将这些文件列入黑名单)

有更好的方法吗?

最佳答案

您可以简单地通过 ImageMagick 适合您选择的语言的函数加载图像。如果图像的格式不正确(即内部格式,而不是其美学属性),我希望 ImageMagick 拒绝加载它并报告错误。例如,在 PHP 中,如果图像加载失败,则 readImage 返回 false。

或者,您可以读取文件的前几百个字节并确定是否存在预期的图像文件格式 header ;例如,“GIF89”等。

关于security - 如何使用 ImageMagick 测试接收到的输入是否是图像(出于安全目的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761089/

相关文章:

security - 是否可以在 Spring 中以基于表单的身份验证发送更多数据?

security - 使用哪种密码进行跨平台

node.js - NoDecodeDelegateForThisImageFormat `TIFF\"' aws lambda

security - 您会让哪些字符作为密码无效?

java - 如何在 PHP 中重现 java MessageDigest SHA-256 哈希?

java - 使用 XStream 防止 XXE 攻击

php - 将多个 PDF 文件合并为一个页面 PDF - positioned join using PHP

imagemagick - 如何使用 ImageMagick "convert"工具将输出文件名打印到控制台?

.net - 如何使用 Magick.net 将 ImageMagick 命令映射到 .net 代码

shell - ImageMagick 命令转换和保存同名