我们可以用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 阅读(342)
评论(0) 编辑 收藏 所属分类:
Ajax