是否有一种安全的方法来缓存和调整PHP远程图像的大小


Is there a safe way to cache and resize remote images with PHP?

我正在用SimplePie做一个RSS阅读器。

我想拉入RSS提要和显示缩略图的文章。我正在使用RSS附件,稍后将解析RSS项目。& lt; img>。

是否有一种安全的方式来下载这些远程图像到我的服务器,以便我可以缓存它们并调整它们的大小?

例如,我有一些关于如何用cURL完成它的想法,但我对安全性感兴趣。我知道我可以通过文件扩展名来限制,我可能会查看MIME类型,但我只是想知道这是否可行/安全。如果有,应该采取什么步骤来确保没有漏洞。

使用gd或imagemagick调整图片大小

或者你可以这样做查看下面的链接

可能存在的安全问题:

  • 执行远程脚本。不知何故,你下载了一个php脚本而不是一个图像,服务器在以后调用这个图像时执行它。

解决方案:在任何web服务器中,你都可以配置上传目录,这样就没有脚本可以在那里执行。不要忘记为图像添加适当的扩展名(最好从列表中选择,不要相信mime-types)。

  • 客户端读取RSS的XSS。下载一个图像。但它恰好是一个javascript。

解决方案:确保在<img src"...">标签中插入此图像的链接。脚本不会从img标签执行。此外,通过GD或Imagic调整图像大小肯定会破坏其中的任何js,如果有的话。