2009-05-31 112 views
0

我打算使用.htaccess密碼保護一個php腳本的目錄我正在寫,因爲我不相信我的PHP技能來創建一個安全的登錄,但我發現你不能使用AuthUserFile的相對路徑,我不能一概而論。安全的目錄密碼保護沒有.htaccess

如果你可以指示我一個安全的PHP登錄腳本密碼保護一個目錄,我將非常感激。謝謝。

回答

1

你可以做的一件事是將所有「祕密」文件保存在服務器webroot之外的目錄中。所有對這些文件的訪問都可以通過目錄中的一個PHP腳本進行路由。事情是這樣的:

http://www.example.com/protected-directory/access.php?file=/foo/document.doc

帶有目錄結構像這樣:

+--+ /server_root 
    | 
    +--+ /web_root 
    | | 
    | +--+ /protected-directory 
    |  +-- access.php 
    |  +-- access-denied.html 
    | 
    +--+ /protected_root 
     | 
     +--+ /foo 
     +-- document.doc 

在你access.php你會做這樣的事:

$file = $_REQUEST['file']; 
if ($user->hasAccessTo($file)) { 
    readfile("/server_root/protected_root/$file"); 
} else { 
    readfile('access-denied.html'); 
} 

現在,你必須小心你確保沒有人用你的file-參數螺絲,並通過像"../../../etc/passwd"。另外,您可能希望確保您在上面的示例中發送了正確的標題,爲了清晰起見,我省略了這些標題。

0

您可以使用AuthUserFile的絕對路徑,並安排將該文件放置在Web服務器無法訪問的位置。我已經做了很多年了。工作正常。

+0

事情是,如果我分發這個,我不知道用戶將在哪裏放置腳本或他們在什麼操作系統。所以我不認爲我可以使用.htaccess? – tom 2009-05-31 20:44:46