站長資訊網
        最全最豐富的資訊網站

        如何用PHP獲取referer判斷來路防止非法訪問

        本篇文章給大家介紹如何用PHP獲取referer判斷來路防止非法訪問?有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

        如何用PHP獲取referer判斷來路防止非法訪問

        下載頁面down.php 的php代碼 現在我發現,用迅雷,谷歌瀏覽器直接打開,就能輸出下載文件,一點不起防盜鏈作用。 現在我想,只允許在我自己站上連接過來的可以直接使用,別的的站過來的,和直接輸入這個地址的,跳轉到copy.htm頁上去。

        PHP中的 $_SERVER["HTTP_REFERER"] 預定義服務器變量可以判斷來路。

        $_SESSION['HTTP_REFERER']可以獲取當前鏈接的上一個連接的來源地址,即鏈接到當前頁面的前一頁面的 URL 地址。
        一般用于判斷瀏覽者是從哪里點擊鏈接跳到本頁面的,即所說的來路,還可以通過判斷來路來防止盜鏈。
        例如:

        <?php  $url_array = parse_url($_SESSION['HTTP_REFERER']);   //如果頁面的域名不是服務器域名,就連接到登陸窗口   if($_SERVER['HTTP_HOST'] != $url_array["host"]) {   header("location: login.php");   exit;   }   ?>

        近期有個項目需要用到防止用戶非法訪問某json頁面,基礎解決方法就是判斷來路來限制非調用訪問:

        $_SERVER[‘HTTP_REFERER’]:來路鏈接,可能帶尾巴(如:  可以通過php內置函數parse_url()來獲取到當前網址(www.httple.net),即: $refererUrl = parse_url($_SERVER[‘HTTP_REFERER’]); $host = $refererUrl[‘host’]; $host的值即為來路的網址(www.httple.net)。 獲取到了來路的網址之后,我們就可以通過這個網址來限制訪問該頁面的權限了。代碼如下: if(!isset($_SERVER[‘HTTP_REFERER’]) || $referurl[‘host’] !=”www.httple.net”) { header(“location: /”);  //如果沒有來路,或者來路不是本站,跳轉到首頁。 exit; }

        把這行代碼放到json數據頁面的最上方,就能簡單解決該問題。

        該處理方法的缺陷:可通過偽造來路獲取到該頁面的正常數據。

        相關代碼

        獲取來路Url 的方法,主要用到服務器變量中HTTP_REFERER函數的使用,代碼貼上:

        function get_referer(){    $url = $_SERVER["HTTP_REFERER"]; //獲取完整的來路URL    $str = str_replace("http://","",$url); //去掉http://    $strdomain = explode("/",$str); // 以“/”分開成數組    $domain = $strdomain[0]; //取第一個“/”以前的字符   return $domain;   }     //對于百度、谷歌搜索引擎來路判斷    function get_seo(){   $s = 0;    if(strstr(get_referer(),'baidu.com')){    $s = 1;    }    else if(strstr(get_referer(),'google.com.hk')){    $s = 1;    }    return $se;     }

        php網站 獲取來路Url 的方法,主要用到服務器變量中HTTP_REFERER函數的使用,代碼貼上:

        function get_referer(){ $url = $_SERVER["HTTP_REFERER"]; //獲取完整的來路URL $str = str_replace(“http://”,””,$url); //去掉http:// $strdomain = explode(“/”,$str); // 以“/”分開成數組 $domain = $strdomain[0]; //取第一個“/”以前的字符 return $domain; }  //對于百度、谷歌搜索引擎來路判斷 function get_seo(){ $s = 0; if(strstr(get_referer(),’baidu.com’)){ $s = 1; } else if(strstr(get_referer(),’google.com.hk’)){ $s = 1; } return $se; }

        在處理一個表單的時候,不得不考慮到用戶靜態提交的可能,discuz 已經根據formhash來判斷

        這里我用另一種方式來處理 判斷頁面來路,當然這種方法也能夠被偽造HTTP_REFERER來路

        第二部分是解決了 PHP中header('location: 跳轉頁面后 下一頁無法獲取HTTP_REFERER,這里只能在頁面加個鏈接 然后用js 模擬點擊鏈接,這樣下一頁肯定會收到HTTP_REFERER的。Keyword:document.getElementById('gourl').click();

        推薦學習:php視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品无码一区在线观看| 69国产成人综合久久精品| 国产三级精品三级在线专区1| 国产亚洲精品不卡在线| 国产99视频精品免视看7| 亚洲午夜精品第一区二区8050| 国产精品嫩草影院久久| 91精品国产91久久综合| 久久精品无码专区免费青青| 日本欧美国产精品第一页久久| Xx性欧美肥妇精品久久久久久| 国产69精品久久久久777| 少妇精品无码一区二区三区| 亚洲欧美精品丝袜一区二区| 精品久久久久久99人妻| 国产精品99久久久久久董美香| 亚洲精品自产拍在线观看动漫| 国产精品美女一区二区视频| 亚洲精品国精品久久99热一| 亚洲精品动漫免费二区| 日韩精品视频在线观看免费 | 中文字幕精品亚洲无线码一区应用| 精品亚洲一区二区三区在线播放 | 国产精品视频二区不卡| 少妇人妻精品一区二区三区| 少妇精品无码一区二区三区| 亚洲欧美日韩久久精品| 亚洲?V无码乱码国产精品| 欧美精品黑人粗大欧| 青青热久久国产久精品 | 亚洲精品成人a在线观看| 日批日出水久久亚洲精品tv| 四虎国产精品免费久久| 人妻少妇精品系列| 亚洲精品tv久久久久久久久久| 亚洲?V无码成人精品区日韩| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲国产精品无码专区| 中文字幕日韩精品无码内射| 亚洲色精品88色婷婷七月丁香| 在线精品亚洲|