生成唯一數字簽名存入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() 加密簽名提高安全性valid_referers 指令實現服務器層防盜鏈,性能更優