加密網站地址——從根本解決盜連

作者:郝春利

轉貼請註明出處:http://blog.csdn.net/froole

 網站防止圖片等內容盜鏈的方法多種多樣,其中最常用的方法就是通過HTTP訪問頭信息,判斷訪問來源。理解TCP/IP通信員裏的讀者都知道,由於HTTP頭信息處理是在OSI模型的應用層,所以,編造一些假的HTTP頭信息發送給服務器,並不需要什麼特殊的技術或者工具。
下面的演示中,是利用wget命令模擬Firefox2瀏覽器進行HTTP基本認證的例子。依照它的訪問,HTTP服務器根本就分辨不出來是火狐瀏覽器還是wget發送的HTTP請求,而且,訪問來源也被欺騙了。


            
通過HTTP頭信息防止盜鏈,是一種典型的防君子不防小人的做法。


面向網絡的WEB內容,都是公開的,大多數情況是不需要考慮盜鏈問題的。如果要限制某些內容,僅針對於某個特定羣體用戶的瀏覽,可以通過CGI進行用戶認證。例如SNS、論壇以及WEB郵箱等等都具有這種功能。而訪問來源只是作爲訪問日誌的一部分,用來蒐集用戶活動信息,並不是系統運行所必需的內容。

綜上所述,由於HTTP通信協議自身的原因,防止盜鏈的方法中,判斷頭信息是無法做到真正防盜鏈的。想要真正做到防止盜鏈只能通過以下兩個途徑:
1.通過CGI進行用戶認證,防止無關人員對目標內容的訪問:
  雖然,此方法無法防止擁有訪問權限會員“盜鏈”,但是,對於防止不相干人員的盜鏈還是非常有效的。
2.動態變換訪問路徑:
  此種防止盜鏈的方法很直接,就是讓盜鏈者得到的地址是無效的。而這個地址,只有在最先訪問的用戶手裏纔有效。以下,本文將就如何對原始鏈接地址加密,進行討論。

本文所介紹的加密鏈接地址的方法,是一種利用XOR算法的簡單的共有鑰加密。
電腦技術中經常使用的加密方法有兩種,一種是公開鑰加密(如SSL),一種是公有鑰加密(也叫祕密鑰加密,如AES、BrowFish等)技術。公有鑰加密就是加密方和解密方擁有共同的鑰匙進行加密、解密。缺點是一旦鑰匙丟失,那麼,所有的加密處理都將報廢,被加密內容可以被任何擁有鑰匙的人得到。公開鑰加密方法可以解決這一難題,但是,本文中所介紹的鏈接地址加密處理,全部在服務器內部進行,不涉及到泄漏加密鑰匙的問題,而且,加密鑰匙隨着訪問不同而不規則改變,也不存在泄漏解碼鑰匙的問題,所以將採用更簡單的共有鑰加密的方法。
鏈接地址加密原理如下:
1.當新的session被創建時,在session內亂數生成一個共有加密鑰匙。
2.圖片顯示連接時,服務器端CGI自動對諸如內容地址、數據庫中的內容ID等進行加密,生成加密後的鏈接地址。
3.訪問加密後鏈接地址,服務器提取session中的加密鑰匙,解密加密內容,返回請求內容。

爲什麼使用XOR算法:
比如一些圖片網站,如果對URL進行加密,若採用複雜的加密算法,勢必會增加服務器的負擔。
考慮到性能方面,筆者使用了XOR算法。雖然此算法容易被破解,但是,加密鑰匙的生存時間短暫,仍舊可以保持較高的安全性。
以下分別是使用了Java語言和PHP語言的加密代碼,謹供參考。

 

Java代碼:

 

PHP代碼:

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
轉貼請註明出處:http://blog.csdn.net/froole

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章