八種常見的防盜鏈方法總結(jié)_第1頁
八種常見的防盜鏈方法總結(jié)_第2頁
八種常見的防盜鏈方法總結(jié)_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、方法1:判斷引用地址這個方法是最早及最常見的方法。所謂判斷引用地址,就是判斷瀏覽器請求時HTTP頭的Referer字段的值,這個值在里面可以用 Request.UrlReferrer屬性取得。幾個例子來說,在正常情況下當(dāng)用戶在瀏覽 時點(diǎn)擊一個鏈接去到 文件時,瀏覽器在發(fā)出請求jacky.mp3 資源時還會附帶當(dāng)刻瀏覽器所處的頁面地址(即),所以當(dāng)你的網(wǎng)站程序接收到下載 jacky.mp3 資源請求的時候,先判斷http的referer字段的值,如果是從 自己的域名()過來的,則可以認(rèn)為是合法的連接請求,否則就返回一個錯誤的提示信息。這種方法通常用于圖片、 mp3這種容易被人用html“嵌入”到

2、其他網(wǎng)站的資源,使用這種方法可以防止你的圖片直接出現(xiàn)在別人的網(wǎng)頁里(或者防止mp3直接被其他網(wǎng)站嵌入到 flash播放器里),不過訪客使用下載工具還是可以輕松下載,因?yàn)楝F(xiàn)在的下載工具一般會自動用你的域名構(gòu)造一個引用地址,所以如果想再進(jìn)一步防范的話,可以使用一個對應(yīng)表限制每個資源的引用地址,例如將 jacky.mp3 的引用地址限制為 ,這樣下載工具就不太可能構(gòu)造一個“正確”的引用地址了。方法2:使用登錄驗(yàn)證這個方法常見于論壇、社區(qū)。當(dāng)訪客請求網(wǎng)站上的一個資源時,先判斷此請求是否通過登錄驗(yàn)證(在里常用session或form驗(yàn)證來記錄登錄狀態(tài)),如果尚未登錄則返回一個錯誤提示信息。使用這個方法還

3、可以進(jìn)一步判斷登錄的用戶的權(quán)限是否足夠,以實(shí)現(xiàn)帶“權(quán)限”的下載。不過因?yàn)榈卿洜顟B(tài)依賴于會話id,而會話id往往儲存于http請求的cookie字段里,下載工具一般沒法獲得瀏覽器的cookie字段,所以這些資源往往無法使用下載工具來下載,給正常合法用戶帶來諸多不便(因?yàn)榇蟛糠志W(wǎng)民的系統(tǒng)都安裝了下載工具,一點(diǎn)擊下載鏈接一般會被下載工具攔截,導(dǎo)致無法使用瀏覽器本身的下載功能)。簡單的解決方法是將這個session id放到URL中。這種方法的另外一個缺點(diǎn)是訪客無法匿名下載,所以這個方法一般只用于論壇和社區(qū)網(wǎng)站。方法3:使用cookie其實(shí)這種方法原理上跟方法2差不多。就是在顯示“下載”鏈接的頁面里產(chǎn)

4、生一個動態(tài)值的cookie,然后在處理資源下載請求時先判斷cookie里有沒有正確的cookie,如果沒有則返回錯誤提示信息。至于這個動態(tài)值如何產(chǎn)生,只要能逆向判斷動態(tài)值是否合法的都可以,例如將當(dāng)前的時間去除秒數(shù)取哈希值(也叫散列值)。如果網(wǎng)頁程序是則更簡單,可以往Session里隨便存一個字符串或數(shù)字,然后在處理下載請求時先檢查Session 里是否存在這個字符串或數(shù)字。使用這個方法的缺點(diǎn)跟方法2一樣。方法4:使用POST下載客戶端瀏覽器請求資源都是使用HTTP的GET方法的,其實(shí)使用POST方法也可以往客戶端返回?cái)?shù)據(jù)。所以可以將下載鏈接換成一個表單(Form)和一個按鈕(Submit),將

5、待下載的文件的名稱或id放到表單的一個隱藏文本框(Input)里,當(dāng)用戶點(diǎn)擊提交按鈕時,服務(wù)程序先判斷請求是否為 POST方式,如果是則讀取目標(biāo)資源的二進(jìn)制數(shù)據(jù)并寫入響應(yīng)對象(在里是respone.BinaryWrite方法)。使用這個方法的缺點(diǎn)同樣是無法使用下載工具,更沒法實(shí)現(xiàn)斷點(diǎn)續(xù)傳。 不過比方法2,3好一點(diǎn)的是,下載工具不會攔截你的下載動作,所以正常用戶還是比較順暢地下載到文件。這個方法比較適合小文件的下載。方法5:使用圖形驗(yàn)證碼使用這個方法可以保證每次下載都是“人”在你的網(wǎng)站上下載,而不是下載工具。因?yàn)榫W(wǎng)上很多介紹使用圖形驗(yàn)證碼的方法,所以這里就不再重復(fù)了。這個方法的缺點(diǎn)是比較容易讓正

6、常的用戶感到麻煩。方法6:使用動態(tài)文件名也叫動態(tài)鑰匙法,當(dāng)用戶點(diǎn)擊一個下載鏈接時,先在程序端計(jì)算一個Key(使用一定規(guī)律產(chǎn)生的Key,最好不要使用隨機(jī)字符串例如GUID,并且這個 Key必須有一定時效的),然后在數(shù)據(jù)庫或Cache里記錄這個Key以及它所對應(yīng)的資源ID或文件名,最后讓網(wǎng)頁重定向一個新的URL地址,這個新 URL地址里需要包含這個Key。當(dāng)瀏覽器或下載工具發(fā)出下載請求時,程序先檢測這個Key是否存在,如果存在則返回對應(yīng)的資源數(shù)據(jù)。使用這個方法的好處是下載工具也可以下載,并且在Key失效前可以斷點(diǎn)續(xù)傳,并且可以通過Key來控制下載的線程數(shù)。使用這個方法(包括以上所有支持下載工具的方

7、法)的缺點(diǎn)是:當(dāng)任意一個用戶下載成功之后,你的資源就會被一些下載工具列入“資源候選名單”,以后其他人在其他地方下載同樣的文件時,下載工具會不斷連接你的服務(wù)器,即使你的文件已經(jīng)刪除或者Key已經(jīng)失效了,這樣會造成類DDos攻擊的后果,下面再介紹兩個即可以讓下載工具下載,又可以防止盜鏈的方法。方法7:擅改資源的內(nèi)容一般熱門的資源都是電影、mp3、較大的壓縮包等,這些文件都是有很多可以插入數(shù)據(jù)的地方的,例如mp3有一個tag區(qū),rar/zip有一個備注區(qū),電影的內(nèi)容隨便一個地方,只要在下載過程當(dāng)中,動態(tài)地往這些地方注入一些隨機(jī)的字節(jié)(幾個字節(jié)即可),就可以達(dá)到讓整個文件的哈希值(即散列值、指紋值)發(fā)生改變,讓從你網(wǎng)站下載的文件的哈希值跟別人的不一樣,就可以防止下載工具主動找上門了。用這個方法配合方法6,可以達(dá)到較好的防盜鏈的效果。缺點(diǎn)是,雖然文件被修改的部分不會被“看”、“聽”出來,不過多多少少讓知道的人覺得不爽。另外就是如果別人把從你網(wǎng)站下載的文件放到其他網(wǎng)站,那么仍然存在下載工具主動找上門的情況(雖然實(shí)際上它下載不了內(nèi)容)。方法8:打包下載這個方法跟方法7的道理是一樣的,只不過這次不是往原始文件里修改,而是在原始的文件基礎(chǔ)上再加個“外殼”,讓資源的哈希值跟別人的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論