我正在开发一个购物系统,shopmanager应该能够将文件上传到系统。这些文件可以付费出售,只能通过提供购买代码才能访问。将文件上传到webroot之外
整个购买代码和上传的东西工作正常。只需阻止对文件的直接访问。
问题:
- 我怎样才能让用户根目录以外的上传而不是从那里读/下载?
- 或者我如何让用户上传到一个目录,但没有人可以从中读取/下载?
我运行Apache和使用这样的代码通过表格来上传文件:
public function upload_file($file='',$post_value='',$path) {
if ($_FILES[$post_value]) {
$uploadext = strtolower(strrchr($_FILES[$post_value]['name'],"."));
if($uploadext=='.jpg' || $uploadext=='.gif' || $uploadext=='.png' || $uploadext=='.swf' || $uploadext=='.jpeg' || $uploadext=='.pdf' || $uploadext=='.doc' || $uploadext=='.xls' || $uploadext=='.docx') {
$destination = $path.$file.$uploadext;
move_uploaded_file($_FILES[$post_value]['tmp_name'], $destination);
} else {
echo PICTURE_ERROR;
}
}
return $file.$uploadext;
}
这是最接近的答案。我创建了一个权限为333的目录,并使用如下所示的.htaccess重定向:example.com/download/shhsfgoagoaag/1/指向一个php文件,该文件在下载后将所有内容解析为参数。此外,提供的文件还有另一个名称,即原始名称。所以黑客必须知道确切的:原始文件名和目录(读取权限在目录上关闭)。店铺经理仍然可以上传文件没有问题。由于基数限制,在webroot之外是不可能的。 – Cudos 2009-09-17 10:34:45