泰州电脑学习网  
收藏本站
  当前位置 : 首页 >> 网站建设 >> asp专栏 >>
用Asp隐藏文件路径,实现防盗链
来源:本站 日期:2007-8-1 点击:

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

我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下,起一个比较特别名字,例如放pdf文件目录为the_pdf_file_s,把下面代码另存为down.asp,他的网上路径为http://www.xx.com/down.asp,我们就可以用http://www.xx.com/down.asp?FileName=webjxcom.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 "无效/webpage/asp/041101/24.htm!"
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; 200497141230.htm=" & 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
end if
if lcase(right(FileName,3))="doc" then '设置DOC类型文件目录
TrueFileName = "/my_D_O_C_file/"&FileName
end if
if lcase(right(FileName,3))="gif" or lcase(right(FileName,3))="jpg" or lcase(right(FileName,3))="png" then
TrueFileName = "/all_images_/"&FileName '设置图像文件目录
end if
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
%>


责任编辑:不详

打印本文 关闭本页 返回页首
相关文章
·md5加密和解密 ·在电子商务中ASP实现购物车的方法
·ASP中access数据库的路径问题 ·一个登陆窗口的记数判断登录(有用哦),了...
·防止Access数据库被下载 ·通过实例讲解来学习ASP中的函数
·用ASP代码得到客户端IP和当前地址 ·ASP教程:ASP分页列表生成静态页面的小程序
·ASP读sql数据时出现乱码问题的解决方法 ·网站安全知识 ASP网站黑客防范编程技巧
·ASP和Access结合编写目录树的程序实例 ·整理:防止Access数据库被下载的9种方法
·ASP脚本语言的19个基本技巧使用 ·推荐文章:ASP脚本程序的15种使用技巧
·Cookie是什么?用法是怎样?与SESSION有什么... ·问题解答:ASP编程中关于session的用法
  热点文章
·键盘操作大全
·如何重装xp系统图解
·神奇地加快XP宽带上...
·如何组装一台电脑
·电脑组装全教程
·五笔字型输入法
·让QQ永久在线——挂...
·bios设置图解教程
  推荐文章
·最新驱动下载
·什么是Google优化
·网站备案绕过手机验证...
·电脑无法启动的特殊故...
·启动“黑屏”故障检修...
·几种主板BIOS报警声音...
·网管维护局域网技巧大...
·网络经典命令行
  相关文章
网站首页 | 关于我们 | 在线学习 | 业务联系 | 版权声明 | 联系方式 | 留言/建议/投诉 | 技术交流
客服邮箱:web@0523pc.com  QQ:43957884
 版权所有、肆意抄袭、模仿必究 泰州电脑© 2004 苏ICP备07003435号