我正在开发一个php脚本,用户可以上传他们想要的任何类型的文件,甚至是php文件。
所有文件都上传/移动到特定文件夹中(“上传”)。
我不希望这些文件可读,否则会导致严重的安全漏洞,因为用户可以编写任何PHP代码并控制我的服务器。
我希望这些文件只能由用户客户端(浏览器)下载。像Dropbox一样。
答案 0 :(得分:1)
你可以拒绝上传/移动的访问权限,然后强制从上传/移动到PHP脚本的所有URL重定向
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/uploads/move/(.*)$ /serve_file.php?filePath=$1 [L]
然后发送一个强制下载标题,例如:
header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($filePath));
header("Connection: close");
readfile($filepath);
exit;
!!确保$ filePath处于上传/移动状态,而不是其他地方,或者他们可以抓取其他文件)!!
感谢@Mark Baker的优化,使用readfile是一种更好的方法!