我开发了一个 PHP 脚本来替换当前的脚本,这将在各种市场/国家得到大量使用。该脚本提供了照片上传功能。
在大量阅读有关问题后,我遵循了下面描述的方法。非常感谢您对其安全性的评论。
- 照片上传至网站根目录之外的私有 777 文件夹。
- 检查白名单扩展名(仅允许 jpg、gif、png),删除其他所有文件。
- 使用 getimagesize 检查最小-最大尺寸和照片有效性。
- 检查 mimetype 和文件扩展名是否匹配。
- 调整上传的照片大小以适合标准尺寸 (使用 imagecopyresampled)。
- 保存创建的文件为 jpg。
- 删除原始文件。
- 将照片另存为新名称(不是随机名称),例如 img51244.jpg。
- 将新照片移动到公共文件夹(777 权限)的可变子目录中,根据不可预测的算法。例如,img10000.jpg 将存储在 photos/a/f/0/img10000.jpg 中,而 img10001.jpg 将存储在 photos/0/9/3/img10001.jpg 中。这是出于其他原因(使用子域名为静态内容提供服务或使用 CDN)。
该脚本将在 Linux 专用服务器上运行。