在我的应用程序的不同部分,我允许用户上传一个图像文件(将存储在AWS S3中),以便稍后在网站上显示。通常,个人资料图片和徽标。
我担心的是:
我目前正在这样做,我假设所有图像都是JPEG。然后在PHP中,我正在执行类似imagejpeg(imagecreatefromstring(file_get_contents($from)), $tmp)
的操作,这会强制它成为JPEG文件。然后,我将生成的文件作为image/jpeg
上传到S3。名称自动生成,并始终以“.jpg”结尾。
我相信这会照顾“安全性”,因为文件会重新生成为JPEG(但也许我错了?)。但它肯定不会处理用户想要上传PNG文件的情况。
提示?
(使用PHP,Yii,AWS)
答案 0 :(得分:0)
我建议按照此链接查看正在上传的文件的“幻数”我发现http://x10hosting.com/forums/tutorials/106510-securing-your-php-file-upload-scripts.html这样更安全,因为您不依赖于文件扩展名,您需要您要允许的文件的白名单,只需启动剩余部分。
将上传的图像转换为正确的格式而不是将其隐藏在另一个文件扩展名中会更有意义,屏蔽原始扩展可能适用于大多数浏览器,但您必须遇到问题。我建议你使用imagemagick。
最后 - 您可能需要查看PHP move_uploaded_file
函数以确保上传的文件有效http://php.net/manual/en/function.move-uploaded-file.php
。
希望这有帮助!