OSS是按使用收费的服务,为了防止用户在OSS上的数据被其他人盗链,OSS支持基于HTTP header中表头字段referer的防盗链方法。
设置Referer白名单
通过下面代码设置Referer白名单:
using Aliyun.OSS;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var refererList = new List<string>();
// 添加referer项
refererList.Add("http://www.aliyun.com");
refererList.Add("http://www.*.com");
refererList.Add("http://www.?.aliyuncs.com");
// 允许referer字段为空,并设置存储空间Referer列表
var request = new SetBucketRefererRequest(bucketName, refererList);
request. AllowEmptyReferer = true;
client.setBucketReferer(bucketName, br);
Console.WriteLine("设置存储空间{0}的referer白名单成功", bucketName);
提示:
- 完整代码参考:GitHub
注意:
- Referer参数支持通配符“*”和“?”,更多详细的规则配置可以参考开发人员指南OSS防盗链
using Aliyun.OSS;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var rc = client.GetBucketReferer(bucketName);
Console.WriteLine("allow?" + (rc.AllowEmptyReferer ? "yes" : "no"));
if (rc.RefererList.Referers != null)
{
for (var i = 0; i < rc.RefererList.Referers.Length; i++)
Console.WriteLine(rc.RefererList.Referers);
}
else
{
Console.WriteLine("Empty Referer List");
}
提示:
- 完整代码参考:GitHub
using Aliyun.OSS;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var rc = client.GetBucketReferer(bucketName);
Console.WriteLine("allow?" + (rc.AllowEmptyReferer ? "yes" : "no"));
if (rc.RefererList.Referers != null)
{
for (var i = 0; i < rc.RefererList.Referers.Length; i++)
Console.WriteLine(rc.RefererList.Referers);
}
else
{
Console.WriteLine("Empty Referer List");
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
OSS会在以下访问操作时进行防盗链验证:
综上,OSS在接收到任何带有或不带Referer字段的访问请求时,都会依据防盗链的配置规则进行验证,确保请求来源合法,防止未经授权的盗链行为导致的额外费用和资源滥用。