虛擬空間如何利用UrlRewrite防止盜鏈?

比如,別人上傳的東西,你直接拿了LINK去,貼到別的論壇或者網站,宣稱"有好東西,快來下載",又或者告訴你的朋友"你要這個文件?俺有連接,快下",然後在那裏接受別人的滔滔不絕的景仰之情(當然,結果就是你就別想在這裏混了)
什麼是盜鏈

“盜鏈”的定義是:此內容不在自己服務器上,而通過技術手段,繞過別人放廣告有利益的最終頁,直接在自己的有廣告有利益的頁面上向最終用戶提供此內容。 常常是一些名不見經傳的小網站來盜取一些有實力的大網站的地址(比如一些音樂、圖片、軟件的下載地址)然後放置在自己的網站中,通過這種方法盜取大網站的空間和流量。





爲什麼會產生盜鏈

一般瀏覽有一個重要的現象就是一個完整的頁面並不是一次全部傳送到客戶端的。如果請求的是一個帶有許多圖片和其它信息的頁面,那麼最先的一個Http請求被傳送回來的是這個頁面的文本,然後通過客戶端的瀏覽器對這段文本的解釋執行,發現其中還有圖片,那麼客戶端的瀏覽器會再發送一條Http請求,當這個請求被處理後那麼這個圖片文件會被傳送到客戶端,然後瀏覽器回將圖片安放到頁面的正確位置,就這樣一個完整的頁面也許要經過發送多條Http請求才能夠被完整的顯示。基於這樣的機制,就會產生一個問題,那就是盜鏈問題:就是一個網站中如果沒有起頁面中所說的信息,例如圖片信息,那麼它完全可以將這個圖片的連接到別的網站。這樣沒有任何資源的網站利用了別的網站的資源來展示給瀏覽者,提高了自己的訪問量,而大部分瀏覽者又不會很容易地發現,這樣顯然,對於那個被利用了資源的網站是不公平的。一些不良網站爲了不增加成本而擴充自己站點內容,經常盜用其他網站的鏈接。一方面損害了原網站的合法利益,另一方面又加重了服務器的負擔。

我遇到的盜鏈

我的網站遇到最多的是兩類盜鏈,一是圖片盜鏈,二是文件盜鏈。曾經有一個訪問量極大的網站盜鏈我網站的圖片,一天竟然消耗了數G的流量。同時,我站放的不少幾十兆的大型軟件也常遭到文件盜鏈,大量消耗我站資源。

盜鏈的解決方案

其實通過WEB服務器的URL過濾技術,這個傷腦筋的問題會很容易得到解決。

如果WEB服務器用的是APACHE的話,那麼使用APACHE自帶的Url Rewrite功能可以很輕鬆地防止各種盜鏈,其原理是檢查REFER,如果REFER的信息來自其他網站則禁止訪問所需要的資源。

那麼,IIS支持UrlRewrite嗎?

答案很簡單,不支持。但是我們可以通過安裝第三方服務器擴展讓IIS支持。

目前有一種產品能比較好地支持IIS的UrlRewrite,名字叫ISAPI_Rewrite。

下載地址在: http://www.helicontech.com/download/

這裏只有ISAPI Rewrite的一個LITE版本是免費的,其它都是trial版本。ISAPI Rewrite Lite的版本功能不支持虛擬站點配置,元數據監測和自動緩存清理。 但是基本的UrlRewrite功能都支持。

如何進行UrlRewrite的設置?

isapi_rewrite利用正則表達式進行替換規則的表示。

下面是一個簡單的例子,我想讓我們的用戶輸入 http://localhost/test-12314.html 實際上訪問的是 http://localhost/test.asp?id=12314 。那麼我們的匹配表達式應該是 /test-([0-9]*).html 對應的格式化表達式應該爲 /test.asp\?id=$1 。

進行正則表達式的編寫的時候,可以利用isapi_rewrite提供的正則表達式測試工具(默認安裝提供),進行調試。做好了匹配表達式和格式化表達式,我們可以把它們放到安裝目錄下的httpd.ini裏面。文件保存後,不需重新啓動iis即可生效。

對於我的網站,我防盜鏈的方法是在httpd.ini裏面加入如下語句

RewriteCond Host: (.+)

RewriteCond Referer: (?!http://\1.*).*

RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]

然後重啓IIS,這時防盜鏈就開始起作用了,其他網站盜鏈過來的請求都會被拒絕。

至此,我也終於可以擺脫了被盜鏈的煩惱了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章