ASP可以防图片盗链吗?

hxyman 2005-05-18 03:34:09
如果不是本站访问,那么被访问的图片替换成本站预设的图片如no.gif
用纯ASP能实现吗?
如果别人得到图片的绝对地址,
怎么禁止非本站访问呢?
...全文
188 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxyman 2005-05-19
  • 打赏
  • 举报
回复
唉~~~~~结贴算了。。。
谢谢大家
谢谢 remoonwind(血月划风)
remoonwind 2005-05-19
  • 打赏
  • 举报
回复
MARK 什么....
完全没用.. 图片 除非你有足够的资源来全部隐藏地址到数据库 然后都用 STREAM 读出...
程序上 基本上也不允许你这么做的...
资源就更不说了.
想防盗链 真实办法只有个 ISPAI FILTER ... 晕晕 今天两个这样的问题了
holoon 2005-05-18
  • 打赏
  • 举报
回复
Mark
itljl 2005-05-18
  • 打赏
  • 举报
回复
Mark
hxyman 2005-05-18
  • 打赏
  • 举报
回复
楼上的这段代码是放在哪个文件里面呢?global.asa?

我的意思是
比如我的站点里面有一副图 www.xxx.com/img/xxx.gif

怎么样禁别人在非本站用<img src="www.xxx.com/img/xxx.gif">
还有如果别人直接在浏览器输入www.xxx.com/img/xxx.gif呢?

xxx.gif里面应该不能加ASP吧
iuhxq 2005-05-18
  • 打赏
  • 举报
回复
<!-- #include File="INC/Const.asp" -->
<%
On Error Resume Next
Response.Buffer = True
Response.Clear

Function UseStream(FileName)
Dim FileStream,File
Set FileStream = Server.CreateObject("ADODB.Stream")
FileStream.Open
FileStream.Type = 1
File = server.MapPath(FileName)
FileStream.LoadFromFile(File)
'Response.ContentType = "application/octet-stream"

Response.BinaryWrite FileStream.Read
Response.Flush

FileStream.Close
Set FileStream = Nothing
End Function



Function DownloadFile(FileName)
On error resume next
Server.ScriptTimeOut=999999
Response.Clear
Dim FileType,ADS,StrFileName,Data
FileType=Lcase(Split(FileName,".")(ubound(Split(FileName,"."))))
StrFileName=Server.Mappath(FileName)
TempFileName = Split(StrFileName,"\")(Ubound(Split(StrFileName,"\")))
Set ADS = Server.CreateObject("ADODB.Stream")
ADS.Open
ADS.Type = 1
ADS.LoadFromFile(StrFileName)
Data=ADS.Read
Fsize=Clng(lenb(Data))
If Err Then
'Response.Redirect("Images/NoImg2.gif")
Response.Write("<h1>错误: </h1>" & err.Description & "<p>")
Response.End
End If
ADS.Close
If Response.IsClientConnected Then
If FileType="gif" Or FileType="jpg" Or FileType="jpeg" Or FileType="bmp" Then
Response.ContentType = "image/*"
Else
Response.AddHeader "Content-Disposition", "attachment; filename=" & TempFileName
Response.ContentType = "application/ms-download"
End If
Response.AddHeader "Content-Length", Fsize
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
Response.BinaryWrite Data
Response.Flush
End If
End Function

Dim Server_v1,Server_v2,Path
Server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
Server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))

If Server_v1<>"" And Mid(Server_v1,8,Len(Server_v2)) = Server_v2 Then
Path=Request("Path")
If Path="Face" Then
TFilePath= FacePath & "/" & Request("FileName")
Else
TFilePath = FilePath & "/" & Request("FileName")
End If
Else
TFilePath = "Images/NoImg.gif"
End If
If ChkFile(TFilePath) Then Response.Redirect("Images/NoImg2.gif")
DownloadFile(TFilePath)
Function ChkFile(FileName)
Dim Temp,FileType
ChkFile=False
FileType=Lcase(Split(FileName,".")(ubound(Split(FileName,"."))))
Temp="|asp|aspx|cgi|php|cdx|cer|asa|"
If Instr(Temp,"|"&FileType&"|")>0 Then ChkFile=True
End Function

%>
SPARON 2005-05-18
  • 打赏
  • 举报
回复
up
poonzsp 2005-05-18
  • 打赏
  • 举报
回复
不错~~
bletao 2005-05-18
  • 打赏
  • 举报
回复
up
clon 2005-05-18
  • 打赏
  • 举报
回复

if Request.ServerVariables("HTTP_REFERER")="" Or InStr(Request.ServerVariables("HTTP_REFERER"),Request.ServerVariables("SERVER_NAME"))=0 then
response.redirect "no.gif"
else
response.redirect "ok.gif"
end if
clon 2005-05-18
  • 打赏
  • 举报
回复
早上刚有人问过

if Request.ServerVariables("HTTP_REFERER")="" Or InStr(Request.ServerVariables("HTTP_REFERER"),Request.ServerVariables("SERVER_NAME"))=0 then
response.redirect "bt.gif"
else
response.redirect "class.gif"
end if
小乖 2005-05-18
  • 打赏
  • 举报
回复
可以根据ASP判断网页来源,如果不是从你的www.yourhost.com发来的请求,你就可以做把照片地址修改成no.gif

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧