我正在開發一個購物系統,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