防盗链

背景

A是网站站长,在A的网站的网页里有一些图片和音频视频的链接,这些静态资源都保留在服务器上。B是另一个网站的站长,B在未经A允许的情况下,偷偷使用A的网站的图片资源,放置在自己网站的网页中,通过这种方法盗取空间和流量。 在这样的情况下,第三方网站用户看到的是B的网站,网站用户不知道也不关心网站里的图片是来自于哪里。 由于OSS是按照使用量来收费的,这样用户A在没有获取任何收益的情况下,反而承担了资源使用费用。A站应该怎么办呢?

本文就是介绍类似A这样的用户将资源存放在OSS上后,如何设置防盗链来避免这样情况的发生。 本文适用那些在网页中使用了OSS资源作为外链的用户。

具体方案

目前OSS提供的防盗链的方法主要有两种:

设置Referer。控制台,SDK都可以操作,适合不想写代码的用户,也适合喜欢开发的用户;

签名URL,适合喜欢开发的用户。 本文会给一个控制台设置Referer防盗链的具体事例,也会基于PHP SDK给一个动态生成签名URL防盗链的示例。

通过Referer防盗链的具体步骤

第一步:进入 OSS 管理控制台界面。

第二步:单击目标存储空间的名称进入存储空间管理页面。

第三步:单击Bucket 属性>防盗链设置

第四步:单击“设置”添加白名单网址并设置是否允许其为空。

第五步:单击“提交”保存对防盗链的设置。

举例

对于一个名为test-1-001的存储空间,设置其referer 白名单为 。则只有 referer 为的请求才能访问oss-example这个存储空间中的对象。

签名URL实现步骤

签名URL的原理和实现方法见OSS开发人员指南授权第三方下载。 签名URL的实现步骤:

1、将Bucket的权限设置为私有读;

2、 根据期望的超时时间(签名URL失效的时间)生成签名。

具体实现

第一步:安装PHP最新代码,参考PHP SDK文档

第二步:实现生成签名URL并将其放在网页中,作为外链使用的简单示例:

signUrl($bucket,$object,$timeout);#签名URL实现的函数$img= $signedUrl;#将签名URL动态放到图片资源中并打印出来$my_html="";$my_html .= "";$my_html .= "

".$img."

";$my_html .= "";echo$my_html;?>

第三步:通过浏览器访问 多请求几次会发现签名的URL会变,这是正常的。主要是因为过期时间的改变导致的。这个过期时间是链接失效的时间,是以unix time的形式展示的。 例如:Expires=xxx,可以将这个时间转换成本地时间。在Linux下的命令为date -d@xxx,也可以在网络上找工具自行转换。

特别说明

签名URL可以和Referer白名单功能一起使用。

如果签名URL失效的时间限制在分钟内,盗链用户即使伪造了Referer也必须拿到签名的URL,且必须在有效的时间内才能盗链成功。 相比只使用Referer来说,增加了盗链的难度。 也就是说签名URL配合Referer白名单功能,可以增加防盗链的效果。

防盗链总结

基于OSS的防盗链最佳实践点如下:

使用三级域名URL,例如referer-test.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png,安全性比绑定二级域名更高。三级域名方式能够提供Bucket级别的清洗和隔离,能够应对被盗链后的流量暴涨的情况,也能避免不同Bucket间的互相影响,最终提高业务可用性;

如果使用自定义域名作为连接,CNAME也请绑定到三级域名,规则是bucket + endpoint。假如你的bucket名为test,三级域名则为test.oss-cn-hangzhou.aliyuncs.com;

对Bucket设定尽可能严格的权限类别。例如提供公网服务的Bucket设置为public-read或private,禁止设置为public-read-write。Bucket权限参见访问控制;

对访问来源进行验证,根据需要设置合适的Referer白名单;

如果需要更严格的防盗链方案,请参考签名的URL方案;

记录Bucket访问日志,能够及时发现盗链活动和验证防盗链方案的有效性。 访问日志参见设置访问日志记录。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 一.盗链的定义: 某内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的...
    繁天涯阅读 13,283评论 2 9
  • 关于防盗链与跨域访问 最近用阿里云的时候发现一些防盗链与跨域访问的一些坑,填完坑之后稍微整理一下。 防盗链 防盗链...
    LibX阅读 2,530评论 0 0
  • 定义: 此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最...
    TTTTTriM阅读 2,310评论 0 3
  • 什么是盗链客户端向服务器请求资源时,为了减少网络带宽,提升响应时间,服务器一般不会一次将所有 资源完整地传回给客...
    zhllsr阅读 7,892评论 0 2
  • nginx防盗链的方法 一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通过浏览器直...
    很少更新了阅读 8,523评论 1 3