HTTP協(xié)議中,Header referer是指一個HTTP請求的header中的字段,用來表示請求的來源。在PHP中,我們可以通過$_SERVER['HTTP_REFERER']來得到請求來源的URL地址。Header referer可以提供更多的信息,比如:用戶從哪個頁面跳轉過來的,哪個網(wǎng)站發(fā)出了頁面請求等。
在日常的開發(fā)中,我們常常需要使用header referer這個字段來獲取用戶的訪問來源。比如,我們可以根據(jù)header referer來判斷當前頁面是否是從某個頁面跳轉過來的,或者用戶是否是從某個網(wǎng)站發(fā)起的訪問。以下是一個使用header referer的例子:
if($_SERVER['HTTP_REFERER'] == 'http://www.example.com/'){ // 如果當前頁面是從http://www.example.com跳轉過來的,那么執(zhí)行某個操作 }最常用的應用場景是通過header referer來進行一些頁面間的跳轉,比如clickjacking攻擊就是一種利用header referer實現(xiàn)的攻擊方式。在這種攻擊中,攻擊者會利用一個包含iframe的頁面?zhèn)窝b成一個合法的頁面,然后通過header referer來假裝是用戶操作才能成功跳轉到目標頁面。因此,在處理header referer時需要特別謹慎,避免被攻擊者惡意利用。 除了上述應用場景外,通過header referer還可以進行防盜鏈的操作。防盜鏈是指通過一些手段,比如設置HTTP header referer,來限制外部網(wǎng)站訪問自己網(wǎng)站資源的行為。以下是一個防盜鏈的例子:
// 檢查HTTP header referer是否包含自己的域名 if(!strstr($_SERVER['HTTP_REFERER'],'http://www.example.com/')){ // 如果HTTP header referer不是自己的域名,返回403錯誤提示 header('HTTP/1.1 403 Forbidden'); exit; }需要注意的是,header referer并非完全可信的。攻擊者可以通過修改HTTP請求的header字段實現(xiàn)偽造header referer的目的。因此,在使用header referer時需要注意安全,不可將其作為唯一的用戶來源判斷依據(jù)。