ASP可以防图片盗链吗?

hxyman 2005-05-18 03:34:09
如果不是本站访问,那么被访问的图片替换成本站预设的图片如no.gif
用纯ASP能实现吗?
如果别人得到图片的绝对地址,
怎么禁止非本站访问呢?
...全文
210 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
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 在当前的互联网生态中,网站内容的非法使用(特别是盗链行为)已经成为一个普遍现象,尤其是针对图片和媒体资源的盗链,这不仅会给网站带来带宽压力,还可能触犯版权规定。 *** Core 提供了一种借助中间件来阻止图片盗链的解决方案,该方案能够在应用层级上高效地管理资源的使用权限,以此止未经授权的资源被非法利用。 为了有效实施这一方案,必须先掌握盗链的工作原理。 在 HTTP 协议的框架内,存在一个名为 Referer 的头部字段,该字段用于记录请求资源的前一个页面的网址。 网站可以通过解析这个字段来判断资源请求的来源是否正当。 若请求并非源自本站,则可以拦截该访问并返回一个自定义的响应,比如显示一个禁止访问的提示图像。 针对 Apache 服务器,可以利用 UrlRewrite 功能执行基础的盗链护措施,而对于 IIS 服务器,则需要借助第三方插件来完成类似的保护功能。 在 *** Core 平台中,盗链逻辑可以通过中间件来实现。 中间件作为应用请求处理流程中的一个环节,能够在处理请求之前执行多种检查和预处理任务。 通过构建一个中间件类,我们可以监控所有传入的请求,并检验请求中的 Referer 头部信息。 倘若 Referer 指向的来源不属于本网站,则可以将请求重定向至一个非法访问的提示页面,或者直接返回一个错误响应。 在具体开发中,可以设计一个名为 HotlinkingPreventionMiddleware 的中间件类,该类接受 RequestDelegate 和 IHostingEnvironment 作为参数,通过分析 HTTP 请求头中的 Referer 字段来判定请求的合法性。 如果 ...

28,406

社区成员

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

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