asp防盗链原理及代码

防盗链的原理:
不直接给出服务器中真实的url,将要访问的文件放到服务器上不可访问的目录中,所以要访问的文件就必须通过asp读取文件以二进制流的类型来发送文件,如果加上来源地址和用户登录状态的判断,可以一定意义上的防止盗链。
缺点是:不过开销也会很大。

下面是两个示例的函数,没有加上权限判断。
Sub downloadFile(strFile) 
On error resume next 
Server.ScriptTimeOut=999999 
Dim S,fso,f,intFilelength,strFilename,DownFileName 

strFilename = Server.MapPath(strFile) 
Response.Clear 
Set s = Server.CreateObject("ADODB.Stream") 
s.Open 
s.Type = 1 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
If Not fso.FileExists(strFilename) Then 
'Response.Write("<h1>错误: </h1>
系统找不到指定文件") 
showimg "images/logos.gif" 
Exit Sub 
End If 
Set f = fso.GetFile(strFilename) 
intFilelength = f.size 
s.LoadFromFile(strFilename) 
If err Then 
'Response.Write("<h1>错误: </h1>" & err.Description & "<p>") 
showimg "images/logos.gif" 
Response.End 
End If 
Set fso=Nothing 
Dim Data 
Data=s.Read 
s.Close 
Set s=Nothing 
If Response.IsClientConnected Then 
Response.AddHeader "Content-Disposition", "attachment; filename=" & strFile 
Response.AddHeader "Content-Length", intFilelength 
Response.CharSet = "UTF-8" 
Response.ContentType = "application/octet-stream" 
Response.BinaryWrite Data 
Response.Flush 
End If 
End Sub 

ASP防盗链输出图片函数 showimg (需要Persits.Jpeg组件支持) 

Sub showimg(FileName) 
Response.Clear 
Dim Jpeg,temp_pic 
On Error Resume Next 
Set Jpeg = Server.CreateObject("Persits.Jpeg") 
If -2147221005=Err then 
'Response.write "没有这个组件,请安装!" '检查是否安装AspJpeg组件 
downloadFile FileName 
Exit Sub 
End If 
Jpeg.Open (Server.MapPath(FileName)) '打开图片 
If err.number then 
'Response.write "打开图片失败,请检查路径!" 
Jpeg.Open (Server.MapPath("images/logos.gif")) 
response.end 
End if 
temp_pic=Jpeg.Binary 
Response.ContentType = "image/*" 
Response.AddHeader "Content-Disposition","filename=" & arr_FileName(FileName) 
Response.BinaryWrite temp_pic 
Response.End 
End Sub 

时间: 2024-08-30 19:12:57

asp防盗链原理及代码的相关文章

asp防盗链技术的使用

我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下­,起一个比较特别名字,例如放pdf文件目录为the_pdf_­file_s,把下面代码另存为down.asp,他的网上路径­为http://www.xx.com/down.asp 我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下­,起一个比较特别名字,例如放pdf文件目录为the_pdf_­file_s,把下面代码另存为down.asp,他的网上路径­为http://www.xx.com/down.asp,我们就可以用ht

asp防盗链源码

防盗链  如果我们知道一个静态文件的实际路径如:http://www.xx.com/download/51windows.pdf,如果服务器没有作特别的限制设置,我们就可以毫不费力的把它下载下来!当网站提供51Windows.pdf下载时,怎么样才能让下载者无法得到他的实际路径呢!本文就来介绍如何使用ASP来隐藏文件的实际下载路径.       我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下,起一个比较特别名字,例如放pdf文件目录为the_pdf_file_s,把下面代码另存为d

ASP防盗链及防下载的方法

防盗链|下载   如果我们知道一个静态文件的实际路径如:http://www.xx.com/download/51windows.pdf,如果服务器没有作特别的限制设置,我们就可以毫不费力的把它下载下来!当网站提供51Windows.pdf下载时,怎么样才能让下载者无法得到他的实际路径呢!本文就来介绍如何使用ASP来隐藏文件的实际下载路径.       我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下,起一个比较特别名字,例如放pdf文件目录为the_pdf_file_s,把下面代码

php防盗链几种代码

先来看个最简单的 下面是php实现的代码, xxx.mp3就是你的音乐文件的实际地址, 对外传播的时候只传播php地址,mp3地址对外不公开  代码如下 复制代码 <?php  if(strpos($_SERVER['HTTP_REFERER'], 'qq.com') !== FALSE) {   header('HTTP/1.1 404 Not Found');   exit;  }  readfile('xxx.mp3'); ?> 可以加入白名单的做法    代码如下 复制代码 <?

asp 防盗链代码(彻底屏蔽迅雷,旋风,快车下载站内资源)_应用技巧

复制代码 代码如下: <% '屏蔽主流的下载工具 Dimxurl,xtool '获取浏览器AGENT xurl=lcase(Request.ServerVariables("HTTP_USER_AGENT")) '定义禁止的AGENT,下面5个包含最新版的快车,旋风和迅雷部分版本,可以自行添加! xtool="mozilla/4.0(compatible;msie5.00;windows98)"&_ "mozilla/4.0(compatib

一段防盗链的PHP代码

<?php $ADMIN[defaulturl] = "http://www.163.com/404.htm";//盗链返回的地址$okaysites = array("http://www.163.com/","http://163.com"); //白名单 $ADMIN[url_1] = "http://www.163.com/download/";//下载地点1$ADMIN[url_2] = ""

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 and mid(From_url,8,

asp下载防盗链代码_应用技巧

asp下载防盗链代码第一种:  终于对下载系统做了个防盗链措施,在下载的页面头部做了如下代码,相关代码如下:   复制代码 代码如下: <%   From_url = Cstr(Request.ServerVariables("HTTP_REFERER"))   Serv_url = Cstr(Request.ServerVariables("SERVER_NAME"))   if mid(From_url,8,len(Serv_url)) <> 

Nginx服务器下防盗链的方法介绍_nginx

修改 /usr/local/nginx/conf/nginx.conf 这个配置文件. 找到 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; }[/code] 修改成: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers none blocked *.jannn.com jannn.com; if($invalid_referer) { rewrite ^/ y