1. php防盜鏈如何設置我的程序的某個目錄里邊有資料庫備份文件,但我不希望它被下載,只用特定的方法下載
1、可以把備份文件放到站點外的目錄,專門寫一個下載文件的程序。
2、備份文件名用md5(或者無規律)命名,增加破解難度。
3、增加目錄禁止訪問操作,專門寫一個下載文件的程序。
2. 如何給後綴.php的設置防盜鏈了
一般的下載的步驟:查找->輸出查找結果列表->進入軟體詳細頁面->點擊下載按鈕->打開下載頁面->點擊下載,開始下載
我的方法就是在下載頁面做文章
首先在網站的公共文件里定義一個$key=sdkfjwojf32413這相當於一個密鑰一樣
在下載頁面生成一個隨機數:$certcode = '84615354' (每次打開生成的都不一樣)
然後用以上兩個變數和軟體的ID生成一個md5()加密串
然後生成軟體的真實下載地址:file.php?id=5&codekey=ksfjwofsdkfsf
這里的id是軟體的編號可以根據他從資料庫找到軟體地址$codekey=md5($id.$certcode.$key)
然後把certcode保存到session里,
在file.php的參數裡面得到的codekey和id再從公共文件里得到$key 再從session里得到$certcode
對codekey進么驗證,看是否正確,如果不正確就退出,否則就進行如下操作
1、刪除session(再次打開這個地址就無效了)
2、從資料庫里讀取軟體地址,然後讀取軟體內容,並輸出(用PHP的文件讀取方法輸出要下載的軟體內容而不是直接把地址給他下載)
這樣如果要下載,就必須打開你自己的下載頁面,從你的下載頁面打開地址才能進行下載,而且下載地址每次都不一樣,因為生成的隨機數不一樣
別的地方就算連到你的下載地址,也是下載不了的。
3. php問題 如何寫getimage.php 防盜鏈
這個沒啥難度,只是PHP代碼很久沒寫了,我提供思路:
判斷圖片格式,輸出相應的header("content-type:image/xxx");
判斷域名是否非法;
如果合法,那就 imagecreatefrompng(圖片路徑)或imagecreatefromjpge(路徑),fromgif()不過動畫這個有點尷尬。做相應的輸出。
如果不合法,讀入一個指定的圖片。。。。
4. 我用迅雷下了一個PHP文件,怎麼打開
PHP文件是在伺服器端執行的腳本文件,用不同文本編輯器打開即可。步驟如下:
1、首先找到php文件所在文件夾:
5. php防盜鏈是怎麼做的 就是不讓訪問文件夾和下載網站上的圖片
這個可以通過購買帶防盜鏈功能的空間來實現,只在在空間後台進行設置就行。我記得我在「89互聯」購買的空間就帶了這個功能。
6. 防盜鏈的代碼處理流程
此內容不在自己伺服器上,而通過技術手段,繞過別人放廣告有利益的最終頁,直接在自己的有廣告有利益的頁面上向最終用戶提供此內容。 常常是一些名不見經傳的小網站來盜取一些有實力的大網站的地址(比如一些音樂、圖片、軟體的下載地址)然後放置在自己的網站中,通過這種方法盜取大網站的空間和流量。
為什麼會產生盜鏈
一般瀏覽有一個重要的現象就是一個完整的頁面並不是一次全部傳送到客戶端的。如果請求的是一個帶有許多圖片和其它信息的頁面,那麼最先的一個Http請求被傳送回來的是這個頁面的文本,然後通過客戶端的瀏覽器對這段文本的解釋執行,發現其中還有圖片,那麼客戶端的瀏覽器會再發送一條Http請求,當這個請求被處理後那麼這個圖片文件會被傳送到客戶端,然後瀏覽器會將圖片安放到頁面的正確位置,就這樣一個完整的頁面也許要經過發送多條Http請求才能夠被完整的顯示。基於這樣的機制,就會產生一個問題,那就是盜鏈問題:就是一個網站中如果沒有起頁面中所說的信息,例如圖片信息,那麼它完全可以將這個圖片的連接到別的網站。這樣沒有任何資源的網站利用了別的網站的資源來展示給瀏覽者,提高了自己的訪問量,而大部分瀏覽者又不會很容易地發現,這樣顯然,對於那個被利用了資源的網站是不公平的。一些不良網站為了不增加成本而擴充自己站點內容,經常盜用其他網站的鏈接。一方面損害了原網站的合法利益,另一方面又加重了伺服器的負擔。
如何實現防盜鏈
要實現防盜鏈,我們就必須先理解盜鏈的實現原理,提到防盜鏈的實現原理就不得不從HTTP協議說起,在HTTP協議中,有一個表頭欄位叫referer,採用URL的格式來表示從哪兒鏈接到當前的網頁或文件。換句話說,通過referer,網站可以檢測目標網頁訪問的來源網頁,如果是資源文件,則可以跟蹤到顯示它的網頁地址。有了referer跟蹤來源就好辦了,這時就可以通過技術手段來進行處理,一旦檢測到來源不是本站即進行阻止或者返回指定的頁面。
如果想對自己的網站進行防盜鏈保護,則需要針對不同的情況進行區別對待。如果網站伺服器用的是apache,那麼使用apache自帶的Url Rewrite功能可以很輕松地防止各種盜鏈,其原理是檢查referer,如果referer的信息來自其他網站則重定向到指定圖片或網頁上。
如果伺服器使用的是IIS的話,則需要通過第三方插件來實現防盜鏈功能了,現在比較常用的一款產品叫做ISAPI_Rewrite,可以實現類似於apache的防盜鏈功能。另外對於論壇來說還可以使用「登錄驗證」的方法進行防盜鏈。
在IE或firefox瀏覽器中,我們可以使用HttpWatch抓包工具抓取網頁的表頭信息,該信息就包含了referer段內容,該內容反映的就是用戶是從哪個地址到達當前頁面的。下面使用PHP語句模擬「限制來路鏈接只能是本網站地址」的防盜鏈技術:
<?phpif(isset($_SERVER['HTTP_REFERER'])){//通過字元串處理函數匹配來路URL是否以本站域名打頭,是,則說明非盜鏈if(strpos($_SERVER['HTTP_REFERER']),'http://www.thanks.live')==0){echo "您是通過本站其他頁面鏈接到該頁面";}else{echo "本站禁止盜鏈";}}esle{echo "您是通過類似直接輸入當前URL的方式進入該頁面的";}?>由於referer值是極易偽造的,所以上述方法只是簡單的防盜鏈。
關於防禦方法,有以下3點:
1、不允許referer為空(不建議,因在某些開啟隱私模式的瀏覽器中,或https頁面引用下,referer是空的)
2、地址變更(lighttpd的是根據有效時間,nginx的根據是md5)
3、登錄校驗(如必須登錄網站帳號後才能訪問)
4.可以借鑒效仿crsf token令牌
二、應對方法
前端腳本
實現代碼:
function showImg( url ) {
var frameid = 'frameimg' + Math.random();
window.img = '<img id="img" src=\''+url+'?'+Math.random()+'\' /><script>window.onload = function() { parent.document.getElementById(\''+frameid+'\').height = document.getElementById(\'img\').height+\'px\'; }<'+'/script>';
document.write('<iframe id="'+frameid+'" src="javascript:parent.img;" frameBorder="0" scrolling="no" width="100%"></iframe>');
}
調用方式:
showImg('圖片地址');
關於防禦方法,有以下3點:
1、不允許referer為空(不建議,因在某些開啟隱私模式的瀏覽器中,或https頁面引用下,referer是空的)
2、地址變更(lighttpd的是根據有效時間,nginx的根據是md5)
3、登錄校驗(如必須登錄網站帳號後才能訪問)
後端代理:
那麼如何才能繞過防盜鏈對所需資源進行抓取???
php實戰
在通常的處理過程中,如果在自己的站點直接引入網路的圖片
這里寫圖片描述
(⊙o⊙)哦,引入鏈接失敗咯啊!!!那麼怎麼用curl處理
畢竟要爬取必要的信息
$url="https://gss0..com/9fo3dSag_xI4khGko9WTAnF6hhy/image/w%3D210/sign=/.jpg";
//$url = str_replace("http:/","http://",$url);
$dir = pathinfo($url);
$host = $dir['dirname'];
$refer = $host.'/';
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_REFERER, $refer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
header("Content-type: image/jpeg");
print( $data );
然後么,因為直接print了,所以結果是這樣的
這里寫圖片描述
python實戰
Flask響應請求有以下幾種方法:
render_template 返回模板文件
jsonify 返回json格式的數據
Response 自定義返回的數據及類型
當服務端需要返回圖片或者各種格式的文件時,就需要使用Response進行自定義返
7. PHP如何實現防盜鏈詳解
本文實例講述了php簡單防盜鏈實現方法。分享給大家供大家參考。具體如下:
<?php $ADMIN = array( 'defaulturl'=> 'http://blog.qita.in/images/banner-header.gif', //盜鏈返回的地址 'url_1' => 'http://blog.qita.in/file', 'url_2' => 'http://blog.qita.in/file1', ); $okaysites = array( 'http://qita.in', 'http://blog.qita.in', //白名單 'http://blog.qita.in/1.html', ); $reffer = $_SERVER['HTTP_REFERER']; if ($reffer) { $yes = 0; while (list($domain, $subarray) = each($okaysites)) { if (ereg($subarray, "$reffer")) { $yes = 1; } } $theu = 'url_' . $_GET['site']; $file = $_GET['file']; if ($ADMIN[$theu] and $yes == 1) { header("Location: $ADMIN[$theu]/$file"); } else { header("Location: $ADMIN[defaulturl]"); } } else { header("Location: $ADMIN[defaulturl]"); } print_r($_SERVER['HTTP_REFERER']); ?>
8. php圖片防盜鏈 怎麼破解
這種一般是通過Refer來防盜鏈的,一般只能下載圖片部署到自己伺服器上。
9. PHP文件防盜鏈了,怎麼破解呢
用CURL摸擬請求
$url="目標地址";
//.
functiondisguise_curl($url)
{
$curl=curl_init();
//Setupheaders-.0.0.6
//belowwassplitupbecausephp.netsaidthelinewastoolong.:/
$header[0]="Accept:text/xml,application/xml,application/xhtml+xml,";
$header[0].="text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[]="Cache-Control:max-age=0";
$header[]="Connection:keep-alive";
$header[]="Keep-Alive:300";
$header[]="Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[]="Accept-Language:en-us,en;q=0.5";
$header[]="Pragma:";//browserskeepthisblank.
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1');
curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
curl_setopt($curl,CURLOPT_REFERER,'www.google.com');
curl_setopt($curl,CURLOPT_ENCODING,'gzip,deflate');
curl_setopt($curl,CURLOPT_AUTOREFERER,true);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_TIMEOUT,10);
$html=curl_exec($curl);//executethecurlcommand
curl_close($curl);//closetheconnection
return$html;//andfinally,return$html
}
//
$text=disguise_curl($url);
echo$text;
CURLOPT_REFERER這個的值設置成目標網站的域一般都能過。