加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

用Asp隐藏文件夹路径,做到防盗链 的程序

发布时间:2023-09-23 15:06:38 所属栏目:Asp教程 来源:
导读:如果我们知道一个静态文件的实际路径如:http://www.xx.com/download/51windows.pdf,如果服务器没有作特别的限制设置,我们就可以毫不费力的把它下载下来!当网站提供51windows.pdf下载时,怎么样才能让下载者无法得
如果我们知道一个静态文件的实际路径如: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"))
 
if mid(From_url,8,len(Serv_url)) <> Serv_url then
 
response.write "非法链接!" '防止盗链
 
response.end
 
end if
 
if Request.Cookies("Logined")="" then
 
response.redirect "/login.asp" '需要登陆!
 
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.Write "无效文件名!"
 
Response.End
 
End if
 
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
 
Select Case UCase(FileExt)
 
Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
 
Response.Write "非法操作!"
 
Response.End
 
End Select
 
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; filename=" & GetFileName(Request.QueryString("FileName"))
 
Set Stream = server.CreateObject("ADODB.Stream")
 
Stream.Type = adTypeBinary
 
Stream.Open
 
if lcase(right(FileName,3))="pdf" then '设置pdf类型文件目录
 
TrueFileName = "/the_pdf_file_s/"&FileName
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章