亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

php獲取referer防非法訪問

 更新時間:2021年08月04日 10:35:35   作者:云博客  
這篇文章主要介紹了php獲取referer防非法訪問,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

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

PHP中的 $_SERVER["HTTP_REFERER"] 預(yù)定義服務(wù)器變量可以判斷來路。
$_SESSION['HTTP_REFERER']可以獲取當(dāng)前鏈接的上一個連接的來源地址,即鏈接到當(dāng)前頁面的前一頁面的 URL 地址。
一般用于判斷瀏覽者是從哪里點擊鏈接跳到本頁面的,即所說的來路,還可以通過判斷來路來防止盜鏈。
例如:

<?php

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

?>

相關(guān)代碼

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

$_SERVER[‘HTTP_REFERER']:來路鏈接,可能帶尾巴(如:http://www.httple.net/iwork/20.html),可以通過php內(nèi)置函數(shù)parse_url()來獲取到當(dāng)前網(wǎng)址(www.httple.net),即:

$refererUrl = parse_url($_SERVER[‘HTTP_REFERER']);

$host = $refererUrl[‘host'];

$host的值即為來路的網(wǎng)址(www.httple.net)。

獲取到了來路的網(wǎng)址之后,我們就可以通過這個網(wǎng)址來限制訪問該頁面的權(quán)限了。代碼如下:

if(!isset($_SERVER[‘HTTP_REFERER']) || $referurl[‘host'] !=”www.httple.net”) {
header(“l(fā)ocation: /”); //如果沒有來路,或者來路不是本站,跳轉(zhuǎn)到首頁。
exit;
}

把這行代碼放到j(luò)son數(shù)據(jù)頁面的最上方,就能簡單解決該問題。

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

相關(guān)代碼

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

function get_referer(){   
$url = $_SERVER["HTTP_REFERER"]; //獲取完整的來路URL   
$str = str_replace("http://","",$url); //去掉http://   
$strdomain = explode("/",$str); // 以“/”分開成數(shù)組   
$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網(wǎng)站 獲取來路Url 的方法,主要用到服務(wù)器變量中HTTP_REFERER函數(shù)的使用,代碼貼上:

function get_referer(){
$url = $_SERVER["HTTP_REFERER"]; //獲取完整的來路URL
$str = str_replace(“http://”,””,$url); //去掉http://
$strdomain = explode(“/”,$str); // 以“/”分開成數(shù)組
$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;
}

在處理一個表單的時候,不得不考慮到用戶靜態(tài)提交的可能,discuz 已經(jīng)根據(jù)formhash來判斷

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

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

到此這篇關(guān)于php獲取referer防非法訪問的文章就介紹到這了,更多相關(guān)php放置非法訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • php中單個數(shù)據(jù)庫字段多列顯示(單字段分頁、橫向輸出)

    php中單個數(shù)據(jù)庫字段多列顯示(單字段分頁、橫向輸出)

    這篇文章主要介紹了php中單個數(shù)據(jù)庫字段多列顯示、分行分列顯示技巧,也可稱為單字段分頁、橫向輸出,需要的朋友可以參考下
    2014-07-07
  • Yii1.0 不同頁面多個驗證碼的使用實現(xiàn)

    Yii1.0 不同頁面多個驗證碼的使用實現(xiàn)

    這篇文章主要介紹了Yii1.0 不同頁面多個驗證碼的使用實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • PHP實現(xiàn)的簡單mock json腳本分享

    PHP實現(xiàn)的簡單mock json腳本分享

    這篇文章主要介紹了PHP實現(xiàn)的簡單mock json腳本分享,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-02-02
  • PHP執(zhí)行系統(tǒng)命令函數(shù)實例講解

    PHP執(zhí)行系統(tǒng)命令函數(shù)實例講解

    這篇文章主要介紹了PHP執(zhí)行系統(tǒng)命令函數(shù)實例講解,列舉的都是一些常用的函數(shù),有感興趣的同學(xué)可以學(xué)習(xí)下
    2021-03-03
  • laravel5環(huán)境隱藏index.php后綴(apache)的方法

    laravel5環(huán)境隱藏index.php后綴(apache)的方法

    今天小編就為大家分享一篇laravel5環(huán)境隱藏index.php后綴(apache)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • Yii2.0 模態(tài)彈出框+ajax提交表單

    Yii2.0 模態(tài)彈出框+ajax提交表單

    這篇文章主要介紹了Yii2.0 模態(tài)彈出框+ajax提交表單的實現(xiàn)思路和相關(guān)代碼,非常簡單實用,有需要的小伙伴可以參考下
    2016-05-05
  • php調(diào)用shell的方法

    php調(diào)用shell的方法

    這篇文章主要介紹了php調(diào)用shell的方法,包括相關(guān)的原理、注意事項及函數(shù)用法,需要的朋友可以參考下
    2014-11-11
  • PHP內(nèi)核探索之解釋器的執(zhí)行過程

    PHP內(nèi)核探索之解釋器的執(zhí)行過程

    這篇文章主要介紹了PHP內(nèi)核探索之解釋器的執(zhí)行過程的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • laravel開發(fā)中跨域的解決方案

    laravel開發(fā)中跨域的解決方案

    最近在開發(fā)中遇到了跨域的需求,通過查找相關(guān)資料找到了相關(guān)的解決方法了,所以下面這篇文章主要給大家介紹了關(guān)于laravel開發(fā)中跨域的解決方案,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • thinkPHP5 tablib標(biāo)簽庫自定義方法詳解

    thinkPHP5 tablib標(biāo)簽庫自定義方法詳解

    這篇文章主要介紹了thinkPHP5 tablib標(biāo)簽庫自定義方法,結(jié)合具體實例形式分析了thinkPHP5標(biāo)簽庫的定義、用法及相關(guān)注意事項,需要的朋友可以參考下
    2017-05-05

最新評論