开始的话
前几天看到百度开发者中心说百度云存储BCS支持防盗链功能了,一直没时间尝试。今天试了一下,终于成功了。已经添加到了BCS-support插件中,有用该插件的朋友可以更新到v1.1.1最新版了。。
如果没有安装插件也想给Bucket设置防盗链,可以使用我写好的一个PHP小程序,方法如下:
设置防盗链小程序
2、解压之后,打开gimhoy.php 填入bucket(如果不在BAE环境下,还需填入AK和SK)
3、将整个文件夹上传到服务器,打开gimhoy.php
4、如果响应了OK Status:200,则说明设置成功
当然这只是我自己的方法,可能不是很成熟,轻拍。。
下面是官方文档:
官方文档
如何设置防盗链
为防止用户存储在BCS上的数据下载地址被他人盗链、产生额外的流量及版权盗用,开发者可通过HTTP协议中的表头(header)字段 referer 方式实现防盗链的功能。
目前BCS支持匿名用户访问的情况下,实现防盗链功能。
实现方式
由于通过BCS操作数据都会首先访问ACL模块,进行权限验证,以确定用户是否有权限对bucket或object进行操作,所以防盗链的功能在ACL模块中实现,开发者只需通过 “put_acl” 接口在policy中进行相关设置即可。
了解policy字段的相关说明,请参考《Policy字段说明》。
范例
假设用户名为“baidu”的开发者,他有很多图片存储在 bcs 的 public-demo bucket中; 现在需要将图片权限设置为允许匿名用户通过 www.baidu.com 请求访问图片。
情境1:对多文件设置防盗链
可通过对Bucket设置相关Policy,实现对多文件进行防盗链设置。
{"statements": [ { "action":["get_object"], "effect":"allow", "resource":["public-demo\/"], "user":["*"], "referer":["https://www.baidu.com/*"] } ] }
上述Policy可实现:
如果访问请求来自于referer所指定的 www.baidu.com ,则允许其对public-demo bucket中的所有存储对象进行get_object操作。
情境2:对单个文件设置防盗链
如需对单个文件设置防盗链功能,则可对Object设置相关policy。
{"statements": [ { "action":["get_object"], "effect":"allow", "resource":["public-demo/acl_policy.png"], "user":["*"], "referer":["https://www.baidu.com/*"] } ] }
上述Policy可实现:
如果访问请求来自于referer所指定的 www.baidu.com ,则允许其对public-demo bucket中的acl_policy.png文件进行get_object操作。
为什么这个文件无法下载了?
好东西,现在正在测试下呢= =
大神,求解。为什么我的BCS插件开启了没用一样,还是无法上传图片,显示无法将上传的文件移动至 wp-content/uploads。QQ:451026920 大神求解脱啊。。。。自己研究已通宵了都。。
解决办法:http://blog.gimhoy.com/archives/fix-bae-upload-error.html
我已经按你博客上的设置好了,可是怎么没有起作用呢?还有,我用你的那个防盗链的脚本,也还是不管用啊~~怎么破??求支招~~~
给个资源的链接看看
博主能不能详细解释下 bcs-support 插件里的域名怎么设置?我填博客的域名结果没生效,请问是不是应该在 BAE 上另外绑定个域名用来链接附件?还有在开发者中心里需要设置什么吗?
P.S. 我在后台填的域名是 http://www.sxb.pw/archiver/* ,结果前台文章中附件的链接还是 bcs.duapp.com 开头的直链
后台填写的域名不是链接的域名,是防盗链用的。附件的链接地址更改比较麻烦,而且因为百度BCS暂时不提供绑定域名服务,所以并不推荐更改。。
@Gimhoy:那后台域名就留空。。。?
留空就行。。只要勾选了防盗链,会有一个自动判断的
@Gimhoy:那就好 = =
@Gimhoy:希望能出个添加白名单的防盗链的BCS插件,谢谢!!
@Gimhoy:还有就是BCS的防盗链功能不起作用,