好吧,所以我看过很多关于如何保护图片上传表格的讨论,但是没有人告诉我,该怎么做才能100%防止通过我的应用程序上传恶意代码。
我正在考虑图像重新创建,因为我看到它将是一种非常安全的方法。可以?还有哪些其他选择?还有哪些扩展是这些方法的首选?
答案 0 :(得分:2)
我正在考虑图像重新创建,就像我看到它一样 这将是一个非常安全的方法。
除非您用于重新创建的库不易受攻击:P。但严重的是,我认为这不是一个坏主意,在大多数情况下,它会提高安全性。
为了提高安全性,您还可以使用Fileinfo functions(以前版本的PHP中的mime_content_type())检测内容类型。
关于较旧的Mimetype扩展的摘录表格PHP手册,现在由Fileinfo替换:
此模块中的函数尝试猜测内容类型和 通过查找某些魔术字节序列来编码文件 文件中的特定位置。虽然这不是防弹 接近使用的启发式方法做得非常好。
至于问题,哪个PHP扩展最适合安全图像重新创建...我已经检查了CVE details网站。我认为适用的三重奏是那些扩展:
从比较中我认为GD最适合,因为它的安全问题最少,而且它们已经很老了。其中三个是关键,但ImagMagick和Gmagick表现不佳...... ImageMagick似乎非常错(至少在安全方面),所以我选择Gmagick作为第二选择。
答案 1 :(得分:1)
正如this文档所述,下面是您需要的示例代码段。
$finfo = new finfo(FILEINFO_MIME_TYPE);
$fileContents = file_get_contents($_FILES['some_name']['tmp_name']);
$mimeType = $finfo->buffer($fileContents);