我开发了一个php脚本来替换当前的脚本,这将会对各个市场/国家有很大的影响。 其他人之间的脚本提供照片上传功能。PHP图像上传安全方法
经过大量的关于这个问题的阅读后,我遵循了下面描述的方法。 我将非常感谢您对其安全性的评论。
- 该照片上传到网站根外的私人777文件夹中。
- 执行白名单扩展名检查(只允许jpgs,gifs,pngs)其他所有内容都将被删除。
- 使用getimagesize检查最小 - 最大尺寸和照片有效性。
- 检查MIME类型和文件扩展名匹配。
- 将上传的照片调整为标准尺寸(使用imagecopyresampled)。
- 将创建的文件保存为jpg。
- 删除原始文件。
- 用新的(不是随机的名字)保存照片ie img51244.jpg。
- 根据不可预测的算法将新照片移动到公用文件夹的变量子目录(777权限)。即,
img10000.jpg
将被存储在photos/a/f/0/img10000.jpg
而img10001.jpg
将被存储在photos/0/9/3/img10001.jpg
。这是由于其他原因(使用静态内容服务的子域或使用CDN)完成的。
该脚本将在Linux专用服务器上运行。
这里没有东西跳出来。除了文件夹的777权限 - 据我了解,如果它有777权限,它不是私有的。但据我所知,只有当你的服务器遭到入侵时,这才会真正起作用(这至少不会影响我的脚本) – jammypeach
777听起来并不安全。可能与http://stackoverflow.com/questions/3644138/secure-user-image-upload-capabilities-in-php – ajreal
相关我听起来很不错,除非是非常自由的权限。也许他们可能会有所限制?否则,这将尽我所能想到的一切,包括删除EXIF数据 –