设置防盗链
防盗链是指调用 OSS API 的 PutBucketReferer 接口设置 Referer, 用以防止他人盗用 OSS 数据。
说明 防盗链的 OSS API 接口详细信息请参见 PutBucketReferer。
设置防盗链功能,包括以下参数:
- Referer 白名单。仅允许指定的域名访问 OSS 资源。
- 是否允许空 Referer。如果不允许空 Referer,则只有 HTTP 或 HTTPS header 中包含 Referer 字段的请求才能访问 OSS 资源。
例如,对于一个名为 oss-example 的 Bucket,设置其 Referer 白名单为https://www.aliyun.com/
。则所有 Referer 为https://www.aliyun.com/
的请求才能访问 oss-example 这个 Bucket 中的 Object。
操作方式
操作方式 | 说明 |
---|---|
控制台 | Web 应用程序,直观易用 |
命令行工具ossutil | 命令行工具,性能好 |
Java SDK | 丰富、完整的各类语言 SDK demo |
Python SDK | |
PHP SDK | |
Go SDK | |
C SDK | |
.NET SDK | |
Node.js SDK | |
Ruby SDK |
细节分析
- Referer 验证
- 用户只有通过签名 URL 或者匿名访问 Object 时,才会做防盗链验证。请求的 Header 中有
Authorization
字段的,不会做防盗链验证。 - Bucket 的三种权限(private,public-read,public-read-write)都会做防盗链验证。
- 用户只有通过签名 URL 或者匿名访问 Object 时,才会做防盗链验证。请求的 Header 中有
- Referer 配置
- 一个 Bucket 可以支持多个 Referer 参数。通过控制台设置时使用回车作为换行符分隔,通过 API 设置时使用英文逗号(,)分隔。
- Referer 参数支持通配符星号(*)和问号(?)。
- Referer 效果
- Referer 白名单为空时,不会检查 Referer 字段是否为空(否则所有的请求都会被拒绝)。
- 如果 Referer 白名单不为空,且不允许 Referer 字段为空,则只有 Referer 属于白名单的请求被允许,其他请求(包括 Referer 为空的请求)会被拒绝。
- 如果白名单不为空,但允许 Referer 字段为空,则 Referer 为空的请求和符合白名单的请求会被允许,其他请求都会被拒绝。
通配符详解
- 星号(*):可以使用星号代替 0 个或多个字符。如果正在查找以 AEW 开头的一个文件,但不记得文件名其余部分,可以输入 AEW*,查找以 AEW 开头的所有文件类型的文件,如 AEWT.txt、AEWU.EXE、AEWI.dll 等。要缩小范围可以输入AEW*.txt,查找以 AEW 开头并以 .txt 为扩展名的文件,如 AEWIP.txt、AEWDF.txt。
- 问号(?):可以使用问号代替一个字符。例如输入love?查找以 love 开头的一个字符结尾的文件,如 lovey、lovei 等。要缩小范围可以输入 love?.doc,查找以 love 开头的一个字符结尾并以 .doc 为扩展名的文件,如 lovey.doc、loveh.doc。
更多参考
- 验证防盗链是否生效请参考OSS 验证 Refer 防盗链是否生效。
- 防盗链功能常见问题请参考OSS 防盗链(Referer)配置及错误排除。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论