8種防盜鏈的方式(轉)
場景說明:網站訪問人數很少,但是網頁訪問很慢,很有可能被盜鏈了,如果網頁被盜鏈,web服務器的訪問日誌裏會發現瘋狂的訪問請求正從四面八方湧過來,web服務器為了迎接這批訪客而沒有時間處理正常的頁面,這種狀況可能會一直持續好幾個周時間。
被盜鏈的幾種可能情況
1、在人氣非常旺的網站、論壇、社區的網頁裏直接引用了(使用標記)你網站上的圖片,或者直接在其他網頁(使用flash或媒體播放插件)裏嵌入了你網站上的mp3。
2、在人氣非常旺的網站、論壇、社區裏提供了你的資源的下載地址。
3、你網站的資源可能被一些下載軟件列入了“資源候選名單”,當其他人用下載工具下載相同的文件時,下載軟件會自動找上門並且從你的服務器下載。
解決方式
1、判斷引用地址
所謂判斷引用地址,就是判斷瀏覽器請求時HTTP頭的Referer字段的值,這個值在php裏面可以用 $_SERVER[‘HTTP_REFERER‘]屬性取得。幾個例子來說,在正常情況下當用戶在瀏覽 http://1111.com/abc.html 時點擊一個鏈接去到 http://222.com/jacky.mp3 文件時,瀏覽器在發出請求jacky.mp3 資源時還會附帶當刻瀏覽器所處的頁面地址(即http://1111.com/abc.html),所以當你的網站程序接收到下載 jacky.mp3 資源請求的時候,先判斷http的referer字段的值,如果是從 自己的域名(222.com)過來的,則可以認為是合法的連接請求,否則就返回一個錯誤的提示信息。
這種方法通常用於圖片、 mp3這種容易被人用html“嵌入”到其他網站的資源,使用這種方法可以防止你的圖片直接出現在別人的網頁裏(或者防止mp3直接被其他網站嵌入到 flash播放器裏),不過訪客使用下載工具還是可以輕松下載,因為現在的下載工具一般會自動用你的域名構造一個引用地址,所以如果想再進一步防範的話,可以使用一個對應表限制每個資源的引用地址,例如將 jacky.mp3 的引用地址限制為 http://222.com/11.htmlid=12345,這樣下載工具就不太可能構造一個“正確”的引用地址了。
2、使用登錄驗證
這個方法常見於論壇、社區。當訪客請求網站上的一個資源時,先判斷此請求是否通過登錄驗證,如果尚未登錄則返回一個錯誤提示信息。
3、使用圖形驗證碼
使用這個方法可以保證每次下載都是“人”在你的網站上下載,而不是下載工具。因為網上很多介紹使用圖形驗證碼的方法,所以這裏就不再重復了。這個方法的缺點是比較容易讓正常的用戶感到麻煩。
8種防盜鏈的方式(轉)