我在共享主機中托管(我認為這無關緊要)。我想在 php 腳本中執行一些操作,這些操作包括從檔案中讀取。我希望該檔案不能被任何人訪問,只能通過 php 腳本訪問(否則任何人都可以通過訪問鏈接在未經許可的情況下獲取該檔案)。我怎樣才能做到這一點?
- 將檔案設定為私有/不可通過其 URL 訪問
- 設定一個可以真正讀取這個檔案的php腳本
謝謝。
uj5u.com熱心網友回復:
您可以通過使用以下代碼添加 .htaccess 輕松禁止訪問檔案夾:
deny from all
然后你仍然可以通過 PHP 訪問它fopen()或file_get_contents()
uj5u.com熱心網友回復:
方法:.htaccess 檔案
如https://stackoverflow.com/a/70365577/7335057 中所述,只要您使用的是 apache 或兼容的網路服務器,您就可以使用 .htaccess 檔案。
方法:唯一 URL
擁有長的隨機鏈接也是完全合理的。
https://example.com/usercontent/326a98f7a6c61fb3e37c310c414ca23b16948b4a/test.jpg
您需要確保使用蠻力無法找到鏈接,并且僅允許當前用戶查看檔案的鏈接。
326a98f7a6c61fb3e37c310c414ca23b16948b4aURL的一部分對于每個用戶都必須是唯一的。它不能是散列的 userId 或類似的東西。
以下是如何為您的 URL 生成高度唯一但隨機的字串的示例:
$partLength = 10;
$fix = "your-app-node-1";
$time = microtime(true);
$random = random_int(1000000, 9999999);
$urlPart = substr(sha1($fix), -$partLength)."-";
$urlPart .= substr(sha1($time), -$partLength)."-";
$urlPart .= substr(sha1($random), -$partLength);
修復部分主要用于當您使用多個服務器時,因此 ID 不會發生沖突。
方法:根檔案夾外的檔案
并非所有共享空間的托管商都允許這樣做,但如果您允許,請將檔案放在根目錄上方的檔案夾中,以使它們無法通過網路請求訪問。不過要注意路徑遍歷攻擊。
根目錄之外的檔案通常仍然可以使用 PHP 訪問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382497.html
