ASP实现防盗链的方法

2012 年 12 月 20 日3880

ASP实现防盗链的方法

CND8学院 ASP教程 发布日期:2012年11月27日


  ASP防盗链对于广告做网站的朋友来说一直是个头疼的问题,盗链严重影响了服务器及网站的正常运行,放盗链变的十分需要了,今天一起来看看一个ASP防盗链的实现方法吧。
  
  如果我们知道一个静态文件的实际路径如:http://http://www.zjjv.com///download/webjx.pdf,如果服务器没有作特别的限制设置,我们就可以毫不费力的把它下载下来!当网站提供webjx.pdf下载时,怎么样才能让下载者无法得到他的实际路径呢!本文就来介绍如何使用Asp来隐藏文件的实际下载路径。
  
  我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下,起一个比较特别名字,例如放pdf文件目录为the_pdf_file_s,把下面代码另存为down.asp,他的网上路径为http://http://www.zjjv.com///down.asp,我们就可以用http://http://www.zjjv.com///down.asp?FileName=webjx.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 防XSS注入函数

ASP实例教程:AdRotator组件

ASP 3.0高级编程(二十八)

ASP MVC自定义过滤属性实现log功能

.Net边学边讲(二)

ASP中预编译文件aspx

十天学会ASP之第五天

批量对加密的asp代码解密的asp程序

ASP.NET:访问Excel 电子表格

点这里查看更多ASP教程

0 0