當前位置: 首頁> 最新文章列表> 如何利用header() 實現瀏覽器跳轉時的防盜鏈機制?

如何利用header() 實現瀏覽器跳轉時的防盜鏈機制?

M66 2025-06-12

防盜鏈機制是指防止其他網站直接引用你網站的資源,比如圖片、視頻、文件等,來避免資源被盜用。在PHP 中,利用header()函數進行瀏覽器跳轉時,可以實現一個簡單的防盜鏈機制。

防盜鏈的基本原理

當一個網站的資源(如圖片、視頻等)被其他網站直接引用時,可能會造成帶寬浪費和資源濫用。為了防止這種情況,可以通過HTTP 頭部中的Referer字段來判斷請求來源,從而決定是否允許該請求。

使用header()實現防盜鏈

header()函數是PHP 中用來發送原始HTTP 頭信息的函數。通過檢查請求中的Referer字段,我們可以判斷請求是否來自合法的來源網站。如果不合法,我們可以通過header()函數來做出相應的處理,如重定向到其他頁面或拒絕訪問。

代碼示例

<?php
// 獲取請求中的 Referer 字段
$referer = $_SERVER['HTTP_REFERER'];

// 定義合法的來源域名
$allowed_domain = 'm66.net';

// 檢查 Referer 是否包含合法的域名
if (strpos($referer, $allowed_domain) === false) {
    // 如果 Referer 不合法,跳轉到一個拒絕頁面
    header('Location: https://m66.net/403.html');
    exit;
} else {
    // 如果 Referer 合法,允許訪問資源
    // 可以在這裡執行資源輸出等操作
    echo "歡迎訪問我的資源!";
}
?>

代碼解析

  1. $_SERVER['HTTP_REFERER']用來獲取請求中的Referer字段,通常這個字段會包含請求來源的URL。

  2. 使用strpos()函數檢查Referer字段中是否包含允許的域名( m66.net )。如果包含該域名,說明請求是從合法來源發起的。

  3. 如果Referer不合法,則使用header('Location: https://m66.net/403.html')來重定向到一個403 錯誤頁面,表示禁止訪問。

  4. 如果請求合法,則允許訪問資源並輸出歡迎信息。

注意事項

  • Referer字段並不是每個請求都會帶上,尤其是在一些隱私保護較強的瀏覽器或用戶設置了禁止發送Referer的情況下,防盜鏈機制可能無法完全生效。

  • 這種防盜鏈機制依賴於Referer字段,因此並不百分百安全。如果要增強安全性,還可以結合其他機制,如簽名驗證、IP 白名單等。