今天做个项目学到了一点,防盗链机制如果允许无 Referer 访问的话,是很容易绕过的。
先说说防盗链的原理,http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referer。图片服务器通过检测 Referer 是否来自规定域名,来进行防盗链。
如果盗用网站是 https 的 protocol,而图片链接是 http 的话,则从 https 向 http 发起的请求会因为安全性的规定,而不带 referer,从而实现防盗链的绕过。
比如现在在 cnode 这里,由于我们启用了 https,所以任何 http 的图片几乎都可以直接贴过来并显示了。
20150519 update 现在我已经把出去的 https 也加上了 referer
不对呀,图片服务器检查到Referer不是规定的值,那么图片服务器会返回错误或给出提示,如果现在从Https加载做了防盗的http图片,由于没有Referer,图片是加载不了的吧。
我在网站头加了
<meta name="referrer" content="always">
所以出去的链接都会带 referrer 了,无论 https 或者 http
@alsotang 浏览器卡的紧 但程序代理你怕不怕 所有引用的外部图片 xxx.com/xxx.png 全部给你弄成 cnodejs.org/daolian?imgurl=xxx.com/xxx.png 程序里面用curl获取 再输出 外面在弄个varnish给你一缓存
@nqdy666 人家即使防止了盗链,但如果你的浏览器有缓存的话,看到相同的 url 也就直接使用缓存的了。 所以在你看来,【qq和网易,应该也没有防止图片被盗链】