中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中怎么通過獲取referer防非法訪問

發布時間:2021-08-04 13:45:09 來源:億速云 閱讀:163 作者:Leah 欄目:開發技術

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']:來路鏈接,可能帶尾巴(如:http://www.httple.net/iwork/20.html),可以通過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中怎么通過獲取referer防非法訪問的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹江口市| 湖北省| 望城县| 青铜峡市| 平定县| 肥城市| 金坛市| 阿荣旗| 疏附县| 遂平县| 宁城县| 西充县| 汤原县| 望都县| 新宁县| 太谷县| 揭西县| 永仁县| 苏尼特右旗| 阳新县| 平昌县| 堆龙德庆县| 平湖市| 高淳县| 威海市| 祁门县| 安吉县| 蛟河市| 青阳县| 临漳县| 棋牌| 浑源县| 蒲江县| 红安县| 岳西县| 家居| 乃东县| 顺昌县| 东光县| 娄底市| 准格尔旗|