用Asp隐藏文件路径,实现防盗链 的代码_ASP教程-查字典教程网
用Asp隐藏文件路径,实现防盗链 的代码
用Asp隐藏文件路径,实现防盗链 的代码
发布时间:2016-12-29 来源:查字典编辑
摘要:用Asp隐藏文件路径,实现防盗链如果我们知道一个静态文件的实际路径如:http://www.xx.com/download/51window...

用Asp隐藏文件路径,实现防盗链

如果我们知道一个静态文件的实际路径如:http://www.xx.com/download/51windows.pdf,如果服务器没有作特别的限制设置,我们就可以毫不费力的把它下载下来!当网站提供51windows.pdf下载时,怎么样才能让下载者无法得到他的实际路径呢!本文就来介绍如何使用Asp来隐藏文件的实际下载路径。

我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下,起一个比较特别名字,例如放pdf文件目录为the_pdf_file_s,把下面代码另存为down.asp,他的网上路径为http://www.xx.com/down.asp,我们就可以用http://www.xx.com/down.asp?FileName=51windows.pdf来下载这个文件了,而且下载者无法看到这个文件实际下载路径的!在down.asp中我们还可以设置下载文件是否需要登陆,判断下载的来源页是否为外部网站,从而可以做到防止文件被盗链。

示例代码:

<%

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

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

ifmid(From_url,8,len(Serv_url))<>Serv_urlthen

response.write"非法链接!"'防止盗链

response.end

endif

ifRequest.Cookies("Logined")=""then

response.redirect"/login.asp"'需要登陆!

endif

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

whileinstr(longname,"/")

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

wend

GetFileName=longname

EndFunction

DimStream

DimContents

DimFileName

DimTrueFileName

DimFileExt

ConstadTypeBinary=1

FileName=Request.QueryString("FileName")

ifFileName=""Then

Response.Write"无效文件名!"

Response.End

Endif

FileExt=Mid(FileName,InStrRev(FileName,".")+1)

SelectCaseUCase(FileExt)

Case"ASP","ASA","ASPX","ASAX","MDB"

Response.Write"非法操作!"

Response.End

EndSelect

Response.Clear

iflcase(right(FileName,3))="gif"orlcase(right(FileName,3))="jpg"orlcase(right(FileName,3))="png"then

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

else

Response.ContentType="application/ms-download"

endif

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

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

Stream.Type=adTypeBinary

Stream.Open

iflcase(right(FileName,3))="pdf"then'设置pdf类型文件目录

TrueFileName="/the_pdf_file_s/"&FileName

endif

iflcase(right(FileName,3))="doc"then'设置DOC类型文件目录

TrueFileName="/my_D_O_C_file/"&FileName

endif

iflcase(right(FileName,3))="gif"orlcase(right(FileName,3))="jpg"orlcase(right(FileName,3))="png"then

TrueFileName="/all_images_/"&FileName'设置图像文件目录

endif

Stream.LoadFromFileServer.MapPath(TrueFileName)

WhileNotStream.EOS

Response.BinaryWriteStream.Read(1024*64)

Wend

Stream.Close

SetStream=Nothing

Response.Flush

Response.End

%>

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新ASP教程学习
    热门ASP教程学习
    编程开发子分类