2010-04-04 49 views
1

我正在開發一個網站,該網站允許用戶購買數字內容並實施了一種嘗試提供安全下載的方法。幫助用htaccess和php保護文件訪問?

我用笨強制下載這樣的:

$file = file_get_contents($path); 

force_download("my_file_name.zip", $file); 

當然,我會保證讓用戶可以訪問服務之前下載使用數據庫的文件,但我想知道是否有一種使這些文件更安全的方法。

我正在使用一些8-10字母鍵來創建文件路徑,所以到這些文件的URL不是很容易找出......類似http://mysite.com/as67Hgr/asdo0980/uth89.zip代替http://mysite.com/downloads/my_file.zip

此外,我使用.htaccess來拒絕目錄瀏覽,如下所示:Options All -Indexes

除此之外...我不知道要採取什麼措施。我見過使用.htaccess提供用戶名和密碼方法的文章,但我不明白如何繞過使用該方法發生的密碼提示。

我希望可能有一種方法,我可以使用頭和cUrl(或類似的東西)發送用戶名和密碼組合,但我不知道從哪裏開始。

任何幫助將非常感激。提前致謝!

回答

4

讓它在任何情況下都不會提供這些文件,否則所有的檢查都是沒有意義的。最好的辦法是把它們放在webroot之外的某個地方。即:

/ 
    webroot/   <- root web directory, maybe named www or similar 
    index.php  <- your app, served normally 
    …other serve-able files… 
    files/   <- not part of the serve-able webroot dir 
    secret_file <- web server has no access here 

然後,如果訪問這些目標的唯一途徑就是通過你的腳本,它爲你讓你的腳本的安全。

+0

我從來沒有想到這一點。非常好用,就像你說的那樣,這些文件不能通過直接的URL進行發佈。謝謝一堆。 – bschaeffer 2010-04-04 06:57:32

1

爲什麼不只是Deny from All.htaccess?或者將文件放在webroot上面?這就夠了。但是你目前的設置已經很安全了。你爲什麼認爲你需要任何幫助?

+0

剛纔我從來沒有之前案例的基礎上提供服務的情況下的文件,並想知道是否有任何相關的標準做法。 – bschaeffer 2010-04-04 06:51:34

0

.htaccess應該看起來像這樣,如果你希望它們只能從你的本地主機下載。另外,它還會刪除一些可以嘗試訪問任何文件的處理程序,以防萬一。這樣只有你有權訪問它。在那裏存儲一個index.php文件也是一個好主意,它檢查另一個文件的存在性,如果存在,設置標題,如果不存在,退出。

.htaccess文件:

<Files *> 
    Order Deny,Allow 
    Deny from all 
    Allow from localhost 
</Files> 

RemoveHandler .php .php3 .phtml .cgi .fcgi .pl .fpl .shtml 
+1

非常有趣,哈哈:) – 2010-04-04 05:28:04

+0

我想你可以省略行'從localhost'允許,看到http://httpd.apache.org/docs/1.3/mod/mod_access.html#allow – Dor 2010-04-04 06:43:45

+0

使用從127.0.0.1允許:) – SoLoGHoST 2010-04-04 10:39:35