我們可以用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是否安裝了防盜鏈軟件,最好不要讓別人盜鏈了。
posted on 2006-07-12 18:14
kelven 閱讀(347)
評論(0) 編輯 收藏 所屬分類:
Ajax