« PXE 网络安装 |
Main
| ipcn proxy 暂时关闭 »
May 3, 2008
盗链、反盗链、反反盗链、反反反盗链
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/2008/05/stealing_link_and_referer_etc.html
atppp写Google Reader 里看新浪博客图片提到Firefox的RefControl插件
就想到了盗链、反盗链、反反盗链、反反反盗链这个题目
先简单解释一下意思:
盗链:我的图片音乐视频等资源被别人的网页用了 算盗链
反盗链:基于带宽成本考虑等原因 不想让别人用我的图片 只允许我自己用 想法限制
反反盗链:利用我限制方法的漏洞 想法用我不想让用的图片
反反反盗链:完善限制方法 别人想法用也不让用
......
简单说就是反盗链一件事
很有意思很具普遍性的一个课题 以前折腾过不少 写写思路
1. 如何盗链:
基本的html知识 如img嵌套一个图片 href链接一个文件下载等
2. 如何反盗链
简单的常用的方法是判断Referer头是不是自己的域名
apache可以通过匹配Referer进行 env 设置 然后Allow Deny
squid 可以通过匹配Referer进行 acl 设置 然后http_access alow deny
有一个细节就是不带Referer的请求(空Referer)允不允许 一般都允许 严格的话可以限制
(apache判断 ^$ squid可以通过对有内容取反设置 .+)
3. 如何反反盗链
反反盗链就是绕过前面反盗链的设置
下载软件的思路:一般是加上Referer等
浏览器的思路:一般是改设置不发Referer 或发反盗链不限制的Referer
Firefox的基本设置是 network.http.sendRefererHeader (about:config) 默认是2全发送
改成0 不发送Referer 改成1点链接发送 嵌套图片等不发送Referer头
Firefox 的 RefControl 插件可以基于站点设定Referer策略 或者指定Referer
对付判断Referer为自身或为空等都能反反盗链成功
另外也可以使用代理 代理一层根据需求过滤 Referer
4. 如何反反反盗链
简单的不行了 只能出大招了
比如加上User-Agent等别的头判断(当然也能绕) 正确的是 加上Cookie判断等 记录比对来过的IP
比如根据应用的架构 访问页面时设置session 访问图片等时判断是否来过
或者访问页面时把ip写到内存库 ip库可以放本地内存或远程(提供tcp/udp接口 注意效率)
访问图片时判断来源ip是否在这个ip库再返回正常数据或者404 object not found
技术上还可以更完美更变态一些...
当然并不是都限制"盗链" 比如有些网站资源丰富 或者给图片打上小标签打自己知名度等
限制的话能能节省带宽成本 防止被滥用等
限不限都有道理 反正大家都不容易 可以理解
这些是产品或管理方面的考量了 技术上大体就是上面说的
|
|
Posted by windtear at May 3, 2008 1:37 AM