好吧,我已经看到很多关于如何保护图像上传表单的讨论,但是没有人告诉我,究竟应该怎么做才能 100% 防止恶意代码通过我的应用程序上传。
我目前正在考虑重新创建图像,因为我认为这是一种非常安全的方法。可以?还有哪些其他选择?这些方法还首选哪些扩展?
最佳答案
I'm currently thinking about image re-creation, as I saw that it would be quite a secure method.
除非您用于重新创建的库不易受攻击:P。但说真的,我认为这不是一个坏主意,在大多数情况下它反而会提高安全性。
为了提高安全性,您还可以使用 Fileinfo functions 检测内容类型(以前版本的 PHP 中的 mime_content_type())。
有关旧 Mimetype 扩展的 PHP 手册摘录,现在已被 Fileinfo 取代:
The functions in this module try to guess the content type and encoding of a file by looking for certain magic byte sequences at specific positions within the file. While this is not a bullet proof approach the heuristics used do a very good job.
至于这个问题,哪个 PHP 扩展最适合安全图像重新创建...我已经检查过 CVE details网站。我认为适用的三重奏是那些扩展:
- GD (6 个漏洞)
- ImageMagick (44 个漏洞)
- Gmagick (12 个漏洞)
从比较来看,我认为 GD 最适合,因为它的安全问题数量最少,而且它们已经很老了。其中三个很关键,但 ImagMagick 和 Gmagick 的表现并不好......ImageMagick 似乎有很多错误(至少在安全性方面),所以我选择 Gmagick 作为第二个选项。
关于php - 如何使用 PHP 正确地保护图像上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21855452/