想象一个环境,用户可以通过从他们的电脑上传图像或引用远程 URL 将图像上传到网站。
作为某些安全检查的一部分,我想确保引用的对象确实是图像。
对于远程 URL,我当然会检查内容类型,但这并不是万无一失的。
我想我可以使用 ImageMagick 来完成这项任务。也许执行 ImageMagick.identify() 方法,如果没有返回错误,则返回类型是 JPG|GIF| 等。内容是图像。 (在快速检查中,我注意到 TXT 文件也被正确识别,因此我必须将这些文件列入黑名单)
有更好的方法吗?
最佳答案
您可以简单地通过 ImageMagick 适合您选择的语言的函数加载图像。如果图像的格式不正确(即内部格式,而不是其美学属性),我希望 ImageMagick 拒绝加载它并报告错误。例如,在 PHP 中,如果图像加载失败,则 readImage 返回 false。
或者,您可以读取文件的前几百个字节并确定是否存在预期的图像文件格式 header ;例如,“GIF89”等。
关于security - 如何使用 ImageMagick 测试接收到的输入是否是图像(出于安全目的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761089/