全部產品
Search
文件中心

Object Storage Service:設定防盜鏈

更新時間:Aug 30, 2018

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

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

更多關於防盜鏈的介紹,請參見開發指南中的設定防盜鏈。設定防盜鏈的完整代碼請參見GitHub

設定防盜鏈

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

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 建立OSSClient執行個體。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 添加Referer白名單,且不允許空Referer。Referer參數支援萬用字元星號(*)和問號(?)。
  16. referers := []string{"http://www.aliyun.com",
  17. "http://www.???.aliyuncs.com",
  18. "http://www.*.com"}
  19. err = client.SetBucketReferer(bucketName, referers, false)
  20. if err != nil {
  21. fmt.Println("Error:", err)
  22. os.Exit(-1)
  23. }
  24. }

獲取防盜鏈資訊

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

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 建立OSSClient執行個體。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 獲取防盜鏈資訊。
  16. refRes, err := client.GetBucketReferer(bucketName)
  17. if err != nil {
  18. fmt.Println("Error:", err)
  19. os.Exit(-1)
  20. }
  21. fmt.Println("Referers: ", refRes.RefererList)
  22. fmt.Println("AllowEmptyReferer: ", refRes.AllowEmptyReferer)
  23. }

清空防盜鏈

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

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 建立OSSClient執行個體。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 清空防盜鏈。防盜鏈不能直接清空,需要新建一個允許空Referer的規則來覆蓋之前的規則。
  16. err = client.SetBucketReferer(bucketName, []string{}, true)
  17. if err != nil {
  18. fmt.Println("Error:", err)
  19. os.Exit(-1)
  20. }
  21. }