首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 防盜鏈實作範例與原理解析

     編輯:PHP 綜合知識

防盜鏈是保護伺服器頻寬與資源的常見技術,防止他站直接連結你的圖片、下載檔案等資源。本文提供一個 PHP 防盜鏈實作範例,並說明核心判斷邏輯。

核心程式碼(dao4.php)

關鍵邏輯說明

  1. Referer 檢查:透過 $HTTP_REFERER(或 $_SERVER['HTTP_REFERER'])取得請求來源。
  2. 白名單比對:使用 ereg()(註:PHP 5.3+ 已棄用,建議改用 preg_match())比對允許的域名。
  3. 動態下載路徑:根據 site 參數選擇對應的下載伺服器位置。
  4. 統一導向:合法請求導向真實檔案,非法請求導向預設錯誤頁。
  5. 安全性與改進建議

    • Referer 可偽造:此方案僅能阻擋一般熱連結,無法防禦惡意偽造 Referer 的爬蟲。
    • 建議改用 Token 機制:下載頁面生成一次性 Token 存入 Session,下載驗證頁驗證 Token 並檢查過期時間。
    • 簽名 URL(Signed URL):結合時間戳、檔案路徑、密鑰生成簽名,URL 本身帶有驗證資訊,更適合大型系統。
    • Nginx/Apache 層面防盜鏈:在 Web Server 層設定 valid_referers 或 RewriteCond 效能更好、更難繞過。

    本範例展示了 PHP 層面防盜鏈的基本實作邏輯,實際部署請根據業務安全需求選擇更健全的方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved