在我的应用程序的不同部分,我允许用户上传图像文件(将存储在 AWS S3 中)以便稍后在站点上显示。通常,个人资料图片和徽标。
我的担忧是:
- 安全。它真的是一个图像文件吗?用户是否试图上传恶意文件?
- 质量。
- 文件类型。有些图像比 JPEG 更好,有些比 PNG 更好。上传者可能最清楚,因为这是他的文件。
- 文件扩展名。我假设当扩展名与文件类型匹配时浏览器会喜欢它。将 PNG 隐藏在“.jpg”中可能是个坏主意?
我目前的做法是,我假设所有图像都是 JPEG。然后在 PHP 中我正在做类似的事情imagejpeg(imagecreatefromstring(file_get_contents($from)), $tmp)
,这迫使它成为一个 JPEG 文件。然后我将生成的文件作为image/jpeg
. 该名称是自动生成的,并且总是以“.jpg”结尾。
我相信这会照顾“安全性”,因为文件会重新生成为 JPEG(但也许我错了?)。但它绝对不能处理用户想要上传 PNG 文件的情况。
提示?
(使用 PHP、Yii、AWS)