簡體   English   中英

保護可下載文件的最佳策略-php / mysql Apache2服務器

[英]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文件放在包含文件的目錄中,其中包含以下內容

deny from all

然后創建一個腳本,如果用戶被授權,該腳本使用readfile()來提供文件。

.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM