免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4901 | 回复: 3
打印 上一主题 下一主题

[Web] Apaceh 2 图片等文件防盗链成功,Flash(swf)文件防盗链屡试屡败 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-25 16:48 |只看该作者 |倒序浏览
httpd.conf 中加入以下指令[本机测试,主机为localhost]

SetEnvIfNoCase Referer "^http://localhost/" local_ref=1

<FilesMatch "\.(txt|doc|gif|jpg|mp3|swf)">;
  Order Allow,Deny
  Allow from env=local_ref
</FilesMatch>;

实现了txt、doc、gif、jpg、mp3的防盗链,但是swf文件却无法打开

网页内嵌Flash(swf)文件一般用如下两种格式
完整格式
<OBJECT classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="600" HEIGHT="480">;
<ARAM NAME=movie VALUE="demo.swf">;
<ARAM NAME=quality VALUE=high>;
<ARAM NAME=bgcolor VALUE=#FFFFFF>;
<EMBED src="demo.swf" quality=high bgcolor=#FFFFFF WIDTH="600" HEIGHT="480" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">;</EMBED>;
</OBJECT>;

简单格式
<EMBED src="demo.swf" quality=high WIDTH="600" HEIGHT="480">;</EMBED>;

在网页内加入上述代码,显示Flash动画,在没有设置防盗链的时候,可以正常显示Flash动画,但是设置防盗链之后,就打不开Flash动画了。

已知上述Apache防盗链的实现是基于浏览器的HTTP的请求头Referer参数的,于是作了一番分析测试

写一个记录Referer参数的php文件 ref.php
<?
  $fr = fopen("rec.txt","a";
  fputs($fr,"Referer=" . $_SERVER["HTTP_REFERER"] . "=END\r\n";
  fclose($fr);
?>;

HTML文件 http://localhost/test.htm

在HTML文件中加入图片形式代码
<img src=ref.php>;

刷新HTML网页,会发现在rec.txt文件中添加了Referer记录
"Referer=http://localhost/test.htm=END"

为了不重复记录,删除上述图片形式代码,然后插入Flash形式代码
<EMBED src="ref.php" quality=high WIDTH="600" HEIGHT="480">;</EMBED>;
(这是简单格式,也试过完整格式,结果一样)

刷新HTML页面,会发现在rec.txt文件中添加了如下记录
"Referer==END"

也就是说通过图片嵌入格式
<img src=ref.php>;
嵌入图片的时候,浏览器向服务器发送了Referer参数。

而通过Flash动画嵌入格式
<Embed src=ref.php>;</Embed>;
或者
<OBJECT>;
……
</OBJECT>;
嵌入Flash(swf)动画的时候,浏览器却没有向服务器发送Referer参数。

由于没有Referer,不满足服务器的防盗链设置,于是服务器拒绝向浏览器传送Flash(swf)文件。

为什么会这样?是我浏览器问题?我在办公室测试、在家里测试,结果都一样。

那么如何解决Flash(swf)文件的防盗链问题呢?

论坛徽章:
0
2 [报告]
发表于 2005-09-24 09:09 |只看该作者

Apaceh 2 图片等文件防盗链成功,Flash(swf)文件防盗链屡试屡败

我用的是网页内嵌播放器,播放mp3和视频文件,也不可以。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
3 [报告]
发表于 2005-09-24 10:11 |只看该作者

Apaceh 2 图片等文件防盗链成功,Flash(swf)文件防盗链屡试屡败

如果没有,那就在服务器端没什么好的方法,或者我们还有什么插件没有看到。

也可以这么做,修改一下子flash,加入一段脚本,来调用javascript获得当前页面的网址,这样子就可以判断了哦。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2005-09-24 10:14 |只看该作者

Apaceh 2 图片等文件防盗链成功,Flash(swf)文件防盗链屡试屡败

你可以看看:
http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_15683

An example of communication between JavaScript and Macromedia Flash
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP