根据Secure User Image Upload Capabilities in PHP,推荐的方法是管理图像上传的安全性是使用GD / ImageMagick / ...复制传入的图像(并使用随机名称设置)。
确定。我有以下问题。
1st。
在我们的页面中,我们可以裁剪图像。所以:
在没有先使用GD进行处理的情况下加载图像会有风险吗?
第二次
用GD足够处理图像吗?我看到了这个答案:Block upload of executable images (PHP) 说不是(与我在主题上看到的第一个链接和其他答案相反)。
谢谢!
PS:使用Codeigniter进行编程。
答案 0 :(得分:0)
第一
这应该足够好了。确保图像只是暂时可访问并在完成所有操作后立即删除(我可能还会设置一个cron作业来经常清理临时图像目录,但这取决于存储它的位置)。正如您发布的答案中所述,请记住清理名称并确保您已正确设置权限。还要注意空字节注入和目录遍历(再次只是重复你提到的答案)。
然后,我会使用getimagesize
检查图像是否有效,以确保它是一个真实的图像,并且是关于它的。
还有客户端html5解决方案,您可以完全避开这个问题,但当然这意味着它不适用于旧版浏览器。 当然,不要相信它所说的内容类型。
第二:
是的我会想到,首先尝试getimagesize
,如果你有效,然后用GD处理。您也可以选择将扩展名列入白名单,如果您没有这样做的话。