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

PHP實現圖片防盜鏈:基於Session數字簽名驗證機制

     編輯:PHP 綜合知識

核心思路

生成唯一數字簽名存入Session,頁面頂部驗證,通過則執行圖片輸出邏輯。

關鍵函數

// 生成唯一標識
$uniqid = uniqid("dwz"); // 如 dwz5a1b2c3d4e5f6
$_SESSION["uniqid"] = $uniqid;

// 驗證函數
function has($string) {
    if (!isset($string) || $string != $_SESSION["uniqid"]) {
        exit; // 驗證失敗終止腳本
    }
}

// 頁面頂部調用
session_start();
has($uniqid); // 僅允許本站Session用戶訪問

圖片防盜鏈具體實現

判斷請求來源 $_SERVER['HTTP_HOST'] 或 $_SERVER['HTTP_REFERER'] 是否為本站域名,非本站直接返回 403 或默認圖片。

$allowedHost = $_SERVER['HTTP_HOST'];
$referer = $_SERVER['HTTP_REFERER'];
if (strpos($referer, $allowedHost) === false) {
    header("HTTP/1.1 403 Forbidden");
    exit;
}
// 通過驗證,輸出圖片內容

進階建議

  • 結合 sha1() 加密簽名提高安全性
  • 配合 Nginx/Apache valid_referers 指令實現服務器層防盜鏈,性能更優
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved