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

2018-09-06 12:46

阅读:398

  用Asp隐藏文件路径,实现防盗链
如果我们知道一个静态文件的实际路径如:,如果服务器没有作特别的限制设置,我们就可以毫不费力的把它下载下来!当网站提供51windows.pdf下载时,怎么样才能让下载者无法得到他的实际路径呢!本文就来介绍如何使用Asp来隐藏文件的实际下载路径。
我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下,起一个比较特别名字,例如放pdf文件目录为the_pdf_file_s,把下面代码另存为down.asp,他的网上路径为,我们就可以用来下载这个文件了,而且下载者无法看到这个文件实际下载路径的!在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

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)
CaseASP,ASA,ASPX,ASAX,MDB
Response.Write非法操作!
Response.End
EndSelect
Response.Clear
iflcase(right(FileName,3))=giforlcase(right(FileName,3))=jpgorlcase(right(FileName,3))=pngthen
Response.ContentType=image/*对图像文件不出现下载对话框
else
Response.ContentType=application/ms-download
endif
Response.AddHeadercontent-disposition,attachment;filename=&GetFileName(Request.QueryString(FileName))
SetStream=server.CreateObject(ADODB.Stream)
Stream.Type=adTypeBinary
Stream.Open
iflcase(right(FileName,3))=pdfthen设置pdf类型文件目录
TrueFileName=/the_pdf_file_s/&FileName
endif
iflcase(right(FileName,3))=docthen设置DOC类型文件目录
TrueFileName=/my_D_O_C_file/&FileName
endif
iflcase(right(FileName,3))=giforlcase(right(FileName,3))=jpgorlcase(right(FileName,3))=pngthen
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
%>


评论


亲,登录后才可以留言!