xmlhttp與防盜鏈

我們可以用xmlhttp來讀取文件信息,然後轉移到客戶端,這樣可以隱藏文件的真實地址。從而起到一點點的防止盜鏈的作用。

在這個文件中,我們可以用很多方法來判斷用戶身份,包括來源的url,cookie數據,甚至是ip標誌等。

<%@ codepage=65001%> 

<% 

Response.Buffer=False 

re_url = Lcase(Request.ServerVariables("HTTP_REFERER")) 

'獲得來源頁面的url 

mydomain = Lcase(Request.ServerVariables("SERVER_NAME")) 

'獲得本頁面域名 也可以直接指定 

if mid(re_url,8,len(mydoain)) <> mydomian then 

response.write "URL wrong" 

'or redirect 

response.end() 

end if 

%>

//niceidea 簽名留念

這個是用的最多的防止盜鏈的方法,檢查鏈入的頁面是否是外地人,如果是外部鏈入,拒絕下載。 

這裏更保險的辦法是利用cookie驗證,就象通常的點擊廣告後纔可以看到地址的方法一樣。 

最好的辦法是裝一個防盜鏈軟件,asp腳本比較是基於iis的。<% 

dim file_url,objXMLHTTP 

file_url="http://localhost/11.rar

'我們可以從數據庫中讀取軟件 

Set objXMLHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP") 

objXmlHttp.open "GET",file_url,false 

objXmlHttp.send()If objXMLHTTP.Status<>"200" Then 

response.write("file missing。") 

else 

Response.ContentType = "application/octet-stream" 

Response.AddHeader "content-disposition", "attachment; filename=" & "11.rar" 

Response.BinaryWrite objXMLHTTP.responseBody 

End IfSet obiXMLHTTP=nothing 

response.end() 

%>這個辦法有明顯的弊端,它需要在服務器內部交換一次數據,從而加重了服務器的負擔,類似於開了一個暫時的代理;這裏最好設置response的緩衝屬性爲false,iis6.0的asp緩存大小爲4m,大的文件或者多個文件的緩衝很容易讓服務器當機。 

不過它的好處是防止盜鏈,因爲這裏沒有發送任何關於真實地址的信息到最終的客戶端。 

更有效的使用途徑是解決某些站點的圖片防盜鏈功能.

例如網易相冊,就有防止跨域盜鏈的功能。 

下面的文件: 

<html> 

<body> 

<img src="http://img301.photo.163.com/luomin_dvd/35412650/__scale__1_954873822.jpg"/> 

<img src="getimg.asp?imgsrc=http://img301.photo.163.com/luomin_dvd/35412650/__scale__1_954873822.jpg"/> 

</body> 

</html> 

然後另寫一個getimg.asp

<% 

response.buffer=True 

dim file_url 

file_url=request.querystring("imgsrc") 

Set objXMLHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP") 

objXmlHttp.open "GET",file_url,false 

objXmlHttp.send() 

Response.ContentType = "image/jepg" 

Response.BinaryWrite objXMLHTTP.responseBody 

set objXMLHTTP=nothing 

%> 

你會發現,第一張圖片是個×,第二張則正常。 

在使用getimg.asp的時候,注意你的iis是否安裝了防盜鏈軟件,最好不要讓別人盜鏈了。
 
發佈了102 篇原創文章 · 獲贊 4 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章