Asp隐藏真实路径实现防盗链_方案总结篇

asp图片防盗链

复制down.asp到根目录,编辑down.asp文件,按照内部注释修改

以下是 down.asp 文件的代码:

<%

'━━━━━━━━━━━━━━━━━━━━━━━━━━

'【文件名】down.asp

'【功  能】实现文件隐藏真实路径下载

'【修  改】诺豆网 yangjunwei.com

'【日  期】2007年9月12日

'━━━━━━━━━━━━━━━━━━━━━━━━━━

From_url = Cstr(Request.ServerVariables("HTTP_REFERER"))

Serv_url = Cstr(Request.ServerVariables("SERVER_NAME"))

'防止盗链,设置图片地址

if mid(From_url,8,len(Serv_url)) <> Serv_url then

response.write "<Script Language=JavaScript>alert('诺豆网 防盗链系统提示你↓ 严禁盗链本站资源! yangjunwei.com  By:haibor');this.location.href='http://yangjunwei.com';</script>" '设置盗链跳转页面

'也可用这一句   response.redirect "此处输入你防盗链的地址(网址和图片都可以,演示本论坛有)"

response.end

end if

Function GetFileName(longname)'/folder1/folder2/file.asp=>file.asp

while instr(longname,"/")

longname = right(longname,len(longname)-1)

wend

GetFileName = longname

End Function

Dim Stream

Dim Contents

Dim FileName

Dim TrueFileName

Dim FileExt

Const adTypeBinary = 1

FileName = Request.QueryString("FileName")

if FileName = "" Then

Response.End

End if

FileExt = Mid(FileName, InS

trRev(FileName, ".") + 1)

Response.Clear

if lcase(right(FileName,3))="gif" or lcase(right(FileName,3))="jpg" or lcase(right(FileName,3))="png" then

Response.ContentType = "image/*" '对图像文件不出现下载对话框

else

Response.ContentType = "application/ms-download"

end if

Response.AddHeader "content-disposition", "attachment; 200511212023261479711.htm=" & GetFileName(Request.QueryString("FileName"))

Set Stream = server.CreateObject("ADODB.Stream")

Stream.Type = adTypeBinary

Stream.Open

'设置服务器文件真实地址(如果你的论坛在BBS目录下的话不许要作修改)

TrueFileName = "/bbs/images/upload(为了更加安全,请把上传的文件夹改名)/"&FileName

Stream.LoadFromFile Server.MapPath(TrueFileName)

While Not Stream.EOS

Response.BinaryWrite Stream.Read(1024 * 64)

Wend

Stream.Close

Set Stream = Nothing

Response.Flush

Response.End

%>

ASP下载防盗链

第一种:

终于对下载系统做了个防盗链措施,在下载的页面头部做了如下代码,相关代码如下:

<%

From_url = Cstr(Request.ServerVariables("HTTP_REFERER")) ##'''用来获取来访的URL

Serv_url = Cstr(Request.ServerVariables("SERVER_NAME"))    ##'''获取服务器名称

if mid(From_url,8,len(Serv_url)) <> Serv_url and mid(From_url,8,len(Serv_url))<>"nuodou.com" and mid(From_url,8,len(Serv_url))<>"yangjunwei.com" then

response.write "您下载的附件来自诺豆网,请不要盗链,谢谢<br>" ’防止盗链

response.write "<a href=http://yangjunwei.com>诺豆网 http://yangjunwei.com</a>" ’防止盗链

response.end

end if

%>

第二种:

<% 

’定义函数,用ADODB.Stream读取二进制数据 

Function ReadBinaryFile(FileName) 

  Const adTypeBinary = 1 

  Dim BinaryStream 

  Set BinaryStream = CreateObject("ADODB.Stream") 

  BinaryStream.Type = adTypeBinary 

  BinaryStream.Open 

  BinaryStream.LoadFromFile FileName 

  ReadBinaryFile = BinaryStream.Read 

End Function 

   

Response.AddHeader "Content-Disposition", "attachment;filename=2.gif"’文件名 

Response.ContentType = "image/GIF" ’设置(1) 

response.Binarywrite ReadBinaryFile(server.mappath("2.gif"))’就是你读取存在本地的文件,防止被别人知道真实路径盗连的。 

%> 

(1)下面的示例将 ContentType 属性设置为其他的常见值。 

text/HTML 这个就不说了 

image/GIF gif图片 

image/JPEG jpg图片 

application/x-cdf cdf文档 

application/wma 就是西瓜哪个音乐类型了 

具体可以参照 Web 浏览器文档或当前的 HTTP 规格说明 

   

这样再利用asp的储存session,cookies,以及读取HTTP头等特殊功能就可以完全真正的实现防盗连,这里没有设置缓存,如果访问量巨大,我想设置下就会更好吧。 

第三种:   最简单的用Active Server Pages防站外提交表单、跨站提交表单、防盗链……

方法:Request.SeverVariables("HTTP_REFERER")

解释:当某人通过链接到达当前页,HTTP_REFERER 就保存了这个用户的来源(来路)

举个例子,这个例子很简单,只是抛砖引玉而已,大家可以增加更多的功能。

如下,只有首先从“ yangjunwei.com”登陆才能看到文件内容。

源码:index.asp

<html>

<head><title>最简单的用asp防盗链</title></head>

<body>

<%

Option.Explicit

Response.Buffer=Ture

%>

<%

CheckUrl("https://yangjunwei.com")

%>

<%

Function CheckUrl(url)

Dim Where:Where=Request.SeverVariables("HTTP_REFERER")

If Where=url Then

Call main()

Else

Response.write("很抱歉,您必须从"&url&"访问才能进来!")

End if

End Function

%>

<%

Sub main()

Response.write("这儿是你要显示的网页内容")

End sub

%>

</body>

</html>

该方法对防止盗链文章、站外提交表单、跨站提交表单还比较有效,对于软件盗链比如.rar.zip.exe等倒没什么作用。

不知各位读者是否有好的主意,呵呵。 

还有一种方法就是用判断服务器及上一页的地址来完成。

<%

dim from, local

from = request.ServerVariables("HTTP_REFERER")

local = request.ServerVariables("SERVER_NAME"
)

If mid(from, 8,
Len(local) ) <> local Then

response.write "不要从外部提交数据"

else

call main()

end if

sub main()

’你的主体内容

end sub

%>