2012-02-08 85 views
0

好日子所有下載,的.htaccess文件,拒絕從腳本

我已經在我的網站根目錄的文件夾,名爲文件,這是由htpasswd文件密碼保護,但它允許通過腳本訪問查看。

我將如何允許腳本無需直接從目錄訪問文件即可下載文件?

我舉一個例子來解釋這種情況。

我的主頁上顯示圖片test.jpg,此圖片位於受保護的文檔文件夾中。圖像在主頁上正確顯示。

如果在地址欄輸入www.domain.com/documents/test.jpg,它不會顯示或下載,但會要求輸入密碼(這是我想要的,但不希望人們輸入密碼爲他們想要下載的每個文件)

有沒有一種方法,我可以使php或JavaScript下載文件,而無需提示輸入密碼?其他詞彙繞過.htaccess規則?

thanx提前

+1

htaccess的處理任何PHP是之前,那麼繞過這不是一個選項。 – 2012-02-08 19:18:00

回答

1

我已經重新添加了PHP和Javascript。沒有任何東西可以阻止你編寫remapper PHP腳本,它位於文檔文件夾之外,因此無需Apache身份驗證即可訪問。這可能會發出一個readfile()來發送文件(請參閱文檔示例和用戶貢獻的更詳細的解釋。由於這是一個服務器端腳本,它將直接訪問受保護的目錄。想要實現某種形式的訪問控制,比如追加一個請求參數檢查這是基於文件名的md5加上一個共享密鑰,這在調用腳本中很容易計算,但是一旦你移動了這種訪問協商到一個客戶端腳本,你需要接受這可能是由任何有經驗的黑客復古工程和利用

作爲一個腳註,如果你想讓用戶下載你的圖片,爲什麼要將它們定位在訪問控制的目錄中。爲什麼不把它們移出這個目錄?

1

正如Barry所說,.htaccess是在任何PHP之前處理的,所以繞過它不是一個選項。您將不得不更改.htaccess配置或編寫remapper PHP腳本。

我建議更改.htaccess配置以允許直接下載鏈接但拒絕目錄列表。這將允許用戶下載直接鏈接,如http://www.example.com/documents/some-file-name.ext而不會提示輸入密碼,但他們必須提前知道該鏈接 - 他們將無法查看/documents/文件夾以查看其中的所有內容。

#AuthUserFile /path/to/.htpassword 
#AuthName "Name" 
#AuthType Basic 
#Require Valid-User 

並添加指令以阻止目錄列表:

您可以通過註釋掉或刪除驗證指令做

Options -Indexes