PHP图像上传安全方法

Ale*_*lex 12 php security file-upload

我开发了一个PHP脚本来替换当前的脚本,这将有很多曝光于各个市场/国家.其他人之间的脚本提供照片上传功能.

经过大量关于这个问题的阅读,我按照下面描述的方法.我非常感谢您对其安全性的评论.

  1. 照片将上传到Web根目录外的私有777文件夹中.
  2. 执行对白名单扩展的检查(仅允许jpgs,gif,png),其他所有内容都将被删除.
  3. 使用getimagesize检查最小 - 最大尺寸和照片有效性.
  4. 检查mimetype和文件扩展名匹配.
  5. 将上传的照片大小调整为标准尺寸(使用imagecopyresampled).
  6. 将创建的文件保存为jpg.
  7. 删除原始文件.
  8. 使用新的(非随机名称)即img51244.jpg保存照片.
  9. 根据不可预测的算法将新照片移动到公用文件夹的变量子目录(777权限).即,img10000.jpg将储存在photos/a/f/0/img10000.jpg同时img10001.jpg将储存在photos/0/9/3/img10001.jpg.这是出于其他原因(使用子域进行静态内容服务或使用CDN).

该脚本将在Linux专用服务器上运行.

Seb*_*wak 3

您还应该检查上传的文件大小,因为 getimagesize 有时可能会超出可用 RAM 内存。最好假设您的脚本可能在任何时候崩溃(例如,当停电时),因此您应该实施一些清理过程来删除剩余的、不需要的文件。