3种常用的防盗链的方式
場(chǎng)景說(shuō)明:網(wǎng)站訪問(wèn)人數(shù)很少,但是網(wǎng)頁(yè)訪問(wèn)很慢,很有可能被盜鏈了,如果網(wǎng)頁(yè)被盜鏈,web服務(wù)器的訪問(wèn)日志里會(huì)發(fā)現(xiàn)瘋狂的訪問(wèn)請(qǐng)求正從四面八方涌過(guò)來(lái),web服務(wù)器為了迎接這批訪客而沒(méi)有時(shí)間處理正常的頁(yè)面,這種狀況可能會(huì)一直持續(xù)好幾個(gè)周時(shí)間。
被盜鏈的幾種可能情況
1、在人氣非常旺的網(wǎng)站、論壇、社區(qū)的網(wǎng)頁(yè)里直接引用了(使用標(biāo)記)你網(wǎng)站上的圖片,或者直接在其他網(wǎng)頁(yè)(使用flash或媒體播放插件)里嵌入了你網(wǎng)站上的mp3。
2、在人氣非常旺的網(wǎng)站、論壇、社區(qū)里提供了你的資源的下載地址。
3、你網(wǎng)站的資源可能被一些下載軟件列入了“資源候選名單”,當(dāng)其他人用下載工具下載相同的文件時(shí),下載軟件會(huì)自動(dòng)找上門并且從你的服務(wù)器下載。
解決方式
1、判斷引用地址
?
所謂判斷引用地址,就是判斷瀏覽器請(qǐng)求時(shí)HTTP頭的Referer字段的值,這個(gè)值在php里面可以用 $_SERVER['HTTP_REFERER']屬性取得。幾個(gè)例子來(lái)說(shuō),在正常情況下當(dāng)用戶在瀏覽 http://1111.com/abc.html 時(shí)點(diǎn)擊一個(gè)鏈接去到 http://222.com/jacky.mp3 文件時(shí),瀏覽器在發(fā)出請(qǐng)求jacky.mp3 資源時(shí)還會(huì)附帶當(dāng)刻瀏覽器所處的頁(yè)面地址(即http://1111.com/abc.html),所以當(dāng)你的網(wǎng)站程序接收到下載 jacky.mp3 資源請(qǐng)求的時(shí)候,先判斷http的referer字段的值,如果是從 自己的域名(222.com)過(guò)來(lái)的,則可以認(rèn)為是合法的連接請(qǐng)求,否則就返回一個(gè)錯(cuò)誤的提示信息。
?
這種方法通常用于圖片、 mp3這種容易被人用html“嵌入”到其他網(wǎng)站的資源,使用這種方法可以防止你的圖片直接出現(xiàn)在別人的網(wǎng)頁(yè)里(或者防止mp3直接被其他網(wǎng)站嵌入到 flash播放器里),不過(guò)訪客使用下載工具還是可以輕松下載,因?yàn)楝F(xiàn)在的下載工具一般會(huì)自動(dòng)用你的域名構(gòu)造一個(gè)引用地址,所以如果想再進(jìn)一步防范的話,可以使用一個(gè)對(duì)應(yīng)表限制每個(gè)資源的引用地址,例如將 jacky.mp3 的引用地址限制為?http://222.com/11.htmlid=12345,這樣下載工具就不太可能構(gòu)造一個(gè)“正確”的引用地址了。
2、使用登錄驗(yàn)證
這個(gè)方法常見(jiàn)于論壇、社區(qū)。當(dāng)訪客請(qǐng)求網(wǎng)站上的一個(gè)資源時(shí),先判斷此請(qǐng)求是否通過(guò)登錄驗(yàn)證,如果尚未登錄則返回一個(gè)錯(cuò)誤提示信息。
3、使用圖形驗(yàn)證碼
使用這個(gè)方法可以保證每次下載都是“人”在你的網(wǎng)站上下載,而不是下載工具。因?yàn)榫W(wǎng)上很多介紹使用圖形驗(yàn)證碼的方法,所以這里就不再重復(fù)了。這個(gè)方法的缺點(diǎn)是比較容易讓正常的用戶感到麻煩。
?
轉(zhuǎn)載于:https://www.cnblogs.com/chenhaoyu/p/8618549.html
總結(jié)
以上是生活随笔為你收集整理的3种常用的防盗链的方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Flask的闪现(message) 请
- 下一篇: Python第一周 学习笔记(1)