[英]Best strategy to protect downloadable files -php/mysql Apache2 server
我將試圖弄清楚如何保護目錄免受未經授權或未被識別的用戶下載文件。 提前致謝。
找不到一個好的重復,但一點點搜索會帶來像這樣的PHP保護文件夾的結果
有一種簡單的方法可以使用php限制基於PHP會話授權的文件夾訪問。 它需要為有效的授權sesssions創建存根文件(並自動刪除它們)。 在PHP中你做:
if ($user_has_permission_to_download)
{
touch("tmp/access-" . session_id());
}
然后一個簡單的rewriterule + rewritecond可以用於授權:
RewriteCond %{HTTP_COOKIE} PHPSESSID=(\w+)
RewriteCond ../tmp/access-%1 -f
RewriteRule ^(.+)$ $1 [L]
RewriteRule .+ /deny [L]
當找到相應的cookie值並且存在授權存根文件時,第一個塊允許訪問。 第二條規則阻止其他任何人訪問。
.htaccess是你最好的朋友。 將所有人拒絕放入.htaccess文件中。 或者,如果您不想使用.htaccess文件加密並一直更改下載路徑(LOL!)。
我假設你有一個用戶/登錄腳本在哪里驗證用戶? 使用.htaccess重寫規則通過php腳本轉發文件請求,如果用戶登錄則檢查會話變量然后返回文件。
麋鹿的東西:
.htaccess
RewriteEngine on
RewriteRule ^(.*).(pdf|exe|doc|whatever)$ some-script.php?file=$1.$2 [L]
<?php
if(loginCheck()) //function somewhere that checks session if user is logged in
{
return fopen('../files/' . $_GET['file']); //open and return the requested file
}
這只是偽代碼,可以讓您了解需要執行的操作。 您可能還必須回顯正確的文件頭。
為了阻止人們進入文件目錄,我建議在.AT文件夾中放一個.htaccess文件,並說deny from all
阻止deny from all
訪問它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.