我开发了一个PHP脚本来替换当前的脚本,这将有很多市场/国家的曝光。 其他人之间的这个脚本提供了照片上传功能。
经过大量关于这个问题的阅读后,我采用了下面描述的方法。 我非常感谢您对其安全性的评论。
img10000.jpg
将存储在photos/a/f/0/img10000.jpg
,而img10001.jpg
将存储在photos/0/9/3/img10001.jpg
。这是出于其他原因(使用子域进行静态内容服务或使用CDN)。该脚本将在Linux专用服务器上运行。
答案 0 :(得分:4)
apache
(或您的网络服务器运行的任何用户)拥有。我不知道为什么你不会在这里使用php的默认临时目录,因为它也往往不在web根目录之外。/.png/
实际上与apng.php
匹配。步骤5到8与安全无关。
第9步:我假设您的网站允许所有人查看每张照片。如果不是这种情况,您应该有一个URL方案,其中包含更长的URL(例如,图像的hashsum)。
答案 1 :(得分:3)
您还应该检查上传的文件大小,因为getimagesize有时会超出可用的RAM内存。假设您的脚本可能在任何时候崩溃(例如当电量下降时)也是很好的,因此您应该实施一些清理程序来删除不需要的文件。
答案 2 :(得分:-1)
这是一个非常完整的方法,但我没有看到任何代码执行预防机制。
您应该确保永远不会包含图像内容(使用include或require调用)或通过eval()执行。
否则,可以执行文件末尾包含的php代码。
您还可以尝试检测图像内容中的PHP代码(使用file_get_contents,然后使用正则表达式搜索“<?php”)但我找不到100%安全的方法来消除可疑代码而不会破坏一些(有效的)图像。