本文介绍如何使用防盗链。
为了防止您在OSS上的数据被其他人盗链而产生额外费用,您可以设置防盗链功能,包括以下参数:
- Referer白名单。仅允许指定的域名访问OSS资源。
- 是否允许空Referer。如果不允许空Referer,则只有HTTP或HTTPS header中包含Referer字段的请求才能访问OSS资源。
更多关于防盗链的介绍,请参见开发指南中的设置防盗链。
设置防盗链
以下代码用于设置防盗链:
// Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String bucketName = "<yourBucketName>"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); List<String> refererList = new ArrayList<String>(); // 添加Referer白名单。Referer参数支持通配符星号(*)和问号(?)。 refererList.add("http://www.aliyun.com"); refererList.add("http://www.*.com"); refererList.add("http://www.?.aliyuncs.com"); // 设置存储空间Referer列表。设为true表示Referer字段允许为空。 BucketReferer br = new BucketReferer(true, refererList); ossClient.setBucketReferer(bucketName, br); // 关闭OSSClient。 ossClient.shutdown();
获取防盗链信息
以下代码用于获取防盗链信息:
// Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String bucketName = "<yourBucketName>"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 获取存储空间Referer白名单列表。 BucketReferer br = ossClient.getBucketReferer(bucketName); List<String> refererList = br.getRefererList(); for (String referer : refererList) { System.out.println(referer); } // 关闭OSSClient。 ossClient.shutdown();
清空防盗链
以下代码用于清空防盗链:
// Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String bucketName = "<yourBucketName>"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 防盗链不能直接清空,需要新建一个允许空Referer的规则来覆盖之前的规则。 BucketReferer br = new BucketReferer(); ossClient.setBucketReferer(bucketName, br); // 关闭OSSClient。 ossClient.shutdown();