全部產品
Search
文件中心

Object Storage Service:防盜鏈

更新時間:Aug 30, 2018

為了防止您在OSS上的資料被其他人盜鏈而產生額外費用,您可以設定防盜鏈功能,包括以下參數:

  • Referer白名單。僅允許指定的網域名稱訪問OSS資源。
  • 是否允許空Referer。如果不允許空Referer,則只有HTTP或HTTPS header中包含Referer欄位的請求才能訪問OSS資源。

更多關於防盜鏈的介紹,請參見開發指南中的設定防盜鏈

設定防盜鏈

以下代碼用於設定防盜鏈:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 建立OSSClient執行個體。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. List<String> refererList = new ArrayList<String>();
  10. // 添加Referer白名單。Referer參數支援萬用字元星號(*)和問號(?)。
  11. refererList.add("http://www.aliyun.com");
  12. refererList.add("http://www.*.com");
  13. refererList.add("http://www.?.aliyuncs.com");
  14. // 設定儲存空間Referer列表。設為true表示Referer欄位允許為空。
  15. BucketReferer br = new BucketReferer(true, refererList);
  16. ossClient.setBucketReferer(bucketName, br);
  17. // 關閉OSSClient。
  18. ossClient.shutdown();

獲取防盜鏈資訊

以下代碼用於獲取防盜鏈資訊:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 建立OSSClient執行個體。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. // 獲取儲存空間Referer白名單列表。
  10. BucketReferer br = ossClient.getBucketReferer(bucketName);
  11. List<String> refererList = br.getRefererList();
  12. for (String referer : refererList) {
  13. System.out.println(referer);
  14. }
  15. // 關閉OSSClient。
  16. ossClient.shutdown();

清空防盜鏈

以下代碼用於清空防盜鏈:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. // 建立OSSClient執行個體。
  8. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  9. // 防盜鏈不能直接清空,需要新建一個允許空Referer的規則來覆蓋之前的規則。
  10. BucketReferer br = new BucketReferer();
  11. ossClient.setBucketReferer(bucketName, br);
  12. // 關閉OSSClient。
  13. ossClient.shutdown();