当前位置:K88软件开发文章中心编程语言AspAsp01 → 文章内容

asp防盗链原理及实现方法

减小字体 增大字体 作者:佚名     来源:asp编程网  发布时间:2018-12-30 8:29:46

防盗链的原理:
不直接给出服务器中真实的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 


Server.CreateObject("
ADODB.Stream"


s.Open 

s.Type 



Set 
fso 

Server.CreateObject("
Scripting.FileSystemObject"


If 
Not 
fso.FileExists(strFilename) 
Then 

&
#39
Response.Write("
<
h1>
错误: 
<
/h1>

系统找不到指定文件"


showimg 
"
images/logos.gif"
 

Exit 
Sub 

End 
If 

Set 


fso.GetFile(strFilename) 

intFilelength 

f.size 

s.LoadFromFile(strFilename) 

If 
err 
Then 

&
#39
Response.Write("
<
h1>
错误: 
<
/h1>
"
 
&

#38
 
err.Description 
&

#38
 
"
<
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="
 
&

#38
 
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 

&
#39
Response.write 
"
没有这个组件,请安装!"
 
&
#39
检查是否安装AspJpeg组件 

downloadFile 
FileName 

Exit 
Sub 

End 
If 

Jpeg.Open 
(Server.MapPath(FileName)) 
&
#39
打开图片 

If 
err.number 
then 

&
#39
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="
 
&

#38
 
arr_FileName(FileName) 

Response.BinaryWrite 
temp_pic 

Response.End 

End 
Sub 



asp防盗链原理及实现方法