




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第詳解php偽造Referer請求反盜鏈資源有些產品為了防止自己的產品被盜鏈訪問,會采用反盜鏈措施,如封閉型生態(tài)的音樂網(wǎng)站和視頻網(wǎng)站,他們已經為了版權付費,自然不希望你免費使用他們的資源。但因為很多人專門研究盜鏈,因此我們也需要了解下盜鏈、反盜鏈和逃避反盜鏈的原理。
盜鏈
引用百度百科對盜鏈的定義:
盜鏈是指服務提供商自己不提供服務的內容,通過技術手段繞過其它有利益的最終用戶界面(如廣告),直接在自己的網(wǎng)站上向最終用戶提供其它服務提供商的服務內容,騙取最終用戶的瀏覽和點擊率。受益者不提供資源或提供很少的資源,而真正的服務提供商卻得不到任何的收益。
常規(guī)盜鏈
我們知道,網(wǎng)站提供服務是向服務端請求一個html文件,這個文件中包含有css/js文件,也包含img/video標簽,這些靜態(tài)資源會在html文件加載時,依次的發(fā)起請求并填充在指定位置上,從而完成整個頁面的加載。
因此只要拿到這個圖片的URL并嵌入我們自己的html文件中,就能在我們的網(wǎng)站上訪問,由于資源是不同的HTTP請求獨立訪問的,因此我們也能過濾源站的html文件。這就是最簡單的盜鏈。
危害:在用戶訪問時,并沒有在訪問被盜鏈網(wǎng)站,但是依然會占用該網(wǎng)站的帶寬資源,而帶寬是要給運營商付費的。同時,該網(wǎng)站的廣告、周邊、宣傳等資源并不會被用戶訪問到。
分布式盜鏈
分布式盜鏈比較復雜,需要在服務端部署專門的程序,并不針對單個網(wǎng)站或單個url,而是對全網(wǎng)的所有有用的資源進行盜取,并存儲在自己的數(shù)據(jù)庫中,并在用戶實際訪問時,完全轉換為自己的流量。
危害:自己通過勞動、金錢、版權付費得到的資源,被盜鏈網(wǎng)站免費使用,如網(wǎng)店攝影圖、期刊、電視劇等。并因此導致自己的會員、服務無法實現(xiàn)盈利。
反盜鏈分類
我們了解了盜鏈對源站的危害后,自然要通過一些手段來阻止這種行為維護自己的利益。
加水印
這是最簡單的方法,通過后端程序批量對圖片等資源加上水印,這樣在盜鏈的同時,也在為自己的網(wǎng)站做宣傳,有時甚至會主動尋求這種盜鏈。
資源重命名
因為盜鏈是通過指定的url,這個url中一定包含該資源的路徑和名稱,因此通過不定期的更改文件或目錄的名稱,能夠快速避免盜鏈,但也會導致正在下載的資源被中斷。
限制引用頁
在http請求的頭部信息中,有一個字段:referer,它代表這個請求是從哪個頁面發(fā)起的,如果是單獨在頁面中打開或者服務端請求的,則這個字段為空。因此我們可以通過referer這個字段的值做限制,如果是自己認可的頁面,則返回資源,否則,禁止該請求。但是由于每次都要打開一個白名單的文件做url匹配,因此會降低性能。
加密認證
在客戶端通過將用戶認證的信息和資源的名稱進行組合后加密,將加密的字符串作為url的參數(shù)發(fā)起請求,在服務端進行解密并認證通過后,才會返回請求的資源。這個方式主要用于防范分布式盜鏈。
反盜鏈程序
上面的3種反盜鏈方式,我們常用的是第三種,通過referer屬性來完成反盜鏈,今天也主要分享這一種方法的反盜鏈與防反盜鏈。
后端程序限制
這種限制需要消耗服務端計算資源,因此不如Nginx限制常用。
$from=parse_url($_SERVER['HTTP_REFERER']);
if($from['host']!=''$from['host']!=''){
die('你丫在盜鏈');
}
Nginx限制
通過修改nginx配置文件可以做到,修改完成后記得重啟nginx:
//這里指定需要防盜鏈的資源,如gif/jpg等
location~*\.(gif|jpg|png|jpeg)${
//設置資源的過期時間
expires30d;
//設置合法的引用頁,也就是防盜鏈的白名單;
//noneblocked保證用戶在新頁面打開時依然能夠打開,如果不希望用戶能夠保存刪掉這兩項
valid_referersnoneblocked*.*.*.;
//對于非法的引用頁,可以重寫圖片,也可以直接返回403或404頁面
if($invalid_referer){
rewrite^//static/images/404.jpg;
#return404;
}
Referer-Policy
Referer首部包含了當前請求頁面的來源頁面的地址,即表示當前頁面是通過此來源頁面里的鏈接進入的。服務端一般使用Referer首部識別訪問來源,可能會以此進行統(tǒng)計分析、日志記錄以及緩存優(yōu)化等。
Referer屬性出現(xiàn)在請求頭中,也在請求頭中被設置,但是在瀏覽器的安全策略里,該值無法被js所指定:
$.ajax({
url:'',
beforeSend(xhr){
//在發(fā)送ajax請求前設置header頭部
xhr.setRequestHeader("Referer","/");
xhr.setRequestHeader("User-Agent","stagefright/1.2(Linux;Android5.0)");
success(data){
console.log(data);
error(err){
console.log(err);
});
然而瀏覽器會報錯:
那么Referer是怎么被自動設置的呢?這個得看Referer-Policy屬性是怎么定義的:
no-referrer:整個Referer首部會被移除。訪問來源信息不隨著請求一起發(fā)送。
no-referrer-when-downgrade(默認值):在沒有指定任何策略的情況下用戶代理的默認行為。在同等安全級別的情況下,引用頁面的地址會被發(fā)送(HTTPS-HTTPS),但是在降級的情況下不會被發(fā)送(HTTPS-HTTP)。
origin:在任何情況下,僅發(fā)送文件的源作為引用地址。例如/page.html會將/作為引用地址。
origin-when-cross-origin:對于同源的請求,會發(fā)送完整的URL作為引用地址,但是對于非同源請求僅發(fā)送文件的源。
same-origin:對于同源的請求會發(fā)送引用地址,但是對于非同源請求則不發(fā)送引用地址信息。
strict-origin:在同等安全級別的情況下,發(fā)送文件的源作為引用地址(HTTPS-HTTPS),但是在降級的情況下不會發(fā)送(HTTPS-HTTP)。
strict-origin-when-cross-origin:對于同源的請求,會發(fā)送完整的URL作為引用地址;在同等安全級別的情況下,發(fā)送文件的源作為引用地址(HTTPS-HTTPS);在降級的情況下不發(fā)送此首部(HTTPS-HTTP)。
unsafe-url:無論是同源請求還是非同源請求,都發(fā)送完整的URL(移除參數(shù)信息之后)作為引用地址。
這個值可以通過三種方式來設置:
metaname="referrer"content="origin"
ahref=""rel="externalnofollow"rel="externalnofollow"referrerpolicy="origin"
ahref=""rel="externalnofollow"rel="externalnofollow"rel="noreferrer"
防反盜鏈
前端JS不能在頭部設置Referer字段,和跨域一樣是因為瀏覽器的安全策略,那么同樣的在服務端進行請求就不會有這些限制,我們在服務端請求時就可以自由的修改Referer字段。
我們通過簡單的PHP例子來完成這個功能:
$url='/it/u=3008889497,862090385fm=77';
$refer='';
$ch=curl_init();
//以url的形式進行請求
curl_setopt($ch,CURLOPT_URL,$url);
//以文件流的形式進行返回不直接輸出到瀏覽器
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//瀏覽器發(fā)起請求超時設置
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
//偽造來源地址
curl_setopt($ch,CURLOPT_REFERER,$refer);
$file=curl_exec($ch);
curl_close($ch);
header('Content-Type:text/html');
//對圖片進行base64編碼,然后返回給前端展示
$file=base64_encode($file);
echo"imgsrc='data:image/jpeg;base64,{$file}'/
我們
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設計公司研發(fā)管理制度
- 設計部門日常管理制度
- 診室接診消毒管理制度
- 診所消毒滅菌管理制度
- 試驗委托送檢管理制度
- 財務空白憑證管理制度
- 財政國庫庫款管理制度
- 貨物標識卡片管理制度
- 貨物運輸安全管理制度
- 貨運碼頭安全管理制度
- 四年級語文下冊閱讀專項歸類復習(有答案)
- 頸椎腫瘤的護理
- 2025至2030中國不銹鋼精密帶材行業(yè)前景預測及發(fā)展趨勢預判報告
- 無人機駕駛員雇傭合同協(xié)議
- 湖南省長沙市華益中學2023-2024學年八年級下學期期末考試英語試卷(含答案)
- 海南省瓊海市2023-2024學年七年級下學期期末考試歷史試卷(含答案)
- 電動船舶生產線項目可行性研究報告(范文參考)
- 浙江寧波歷年中考作文題與審題指導(2007-2021)
- 兒童樂園用工合同范本
- 小兒燙傷個案護理
- 山東省肥城市2025年化學高二下期末監(jiān)測試題含解析
評論
0/150
提交評論