posts - 22,comments - 35,trackbacks - 0
我们可以用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 阅读(335) 评论(0)  编辑  收藏 所属分类: Ajax

只有注册用户登录后才能发表评论。


网站导航: