全部产品
阿里云办公

防盗链

更新时间:2018-07-20 18:45:32

为了防止您在OSS上的数据被其他人盗链而产生额外费用,您可以设置防盗链功能,包括以下参数:

  • Referer白名单。仅允许指定的域名访问OSS资源。
  • 是否允许空Referer。如果不允许空Referer,则只有HTTP或HTTPS header中包含Referer字段的请求才能访问OSS资源。

更多关于防盗链的介绍,请参见开发指南中的设置防盗链。防盗链的完整代码请参见GitHub

设置防盗链

以下代码用于设置防盗链:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. use OSS\Model\RefererConfig;
  11. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  12. $accessKeyId = "<yourAccessKeyId>";
  13. $accessKeySecret = "<yourAccessKeySecret>";
  14. // Endpoint以杭州为例,其它Region请按实际情况填写。
  15. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  16. $bucket= "<yourBucketName>";
  17. $refererConfig = new RefererConfig();
  18. // 设置允许空Referer。
  19. $refererConfig->setAllowEmptyReferer(true);
  20. // 添加Referer白名单。Referer参数支持通配符星号(*)和问号(?)。
  21. $refererConfig->addReferer("www.aliiyun.com");
  22. $refererConfig->addReferer("www.aliiyuncs.com");
  23. try{
  24. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  25. $ossClient->putBucketReferer($bucket, $refererConfig);
  26. } catch(OssException $e) {
  27. printf(__FUNCTION__ . ": FAILED\n");
  28. printf($e->getMessage() . "\n");
  29. return;
  30. }
  31. print(__FUNCTION__ . ": OK" . "\n");

获取防盗链信息

以下代码用于获取防盗链信息:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. use OSS\Model\RefererConfig;
  11. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  12. $accessKeyId = "<yourAccessKeyId>";
  13. $accessKeySecret = "<yourAccessKeySecret>";
  14. // Endpoint以杭州为例,其它Region请按实际情况填写。
  15. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  16. $bucket= "<yourBucketName>";
  17. $refererConfig = null;
  18. try{
  19. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  20. $refererConfig = $ossClient->getBucketReferer($bucket);
  21. } catch(OssException $e) {
  22. printf(__FUNCTION__ . ": FAILED\n");
  23. printf($e->getMessage() . "\n");
  24. return;
  25. }
  26. print(__FUNCTION__ . ": OK" . "\n");
  27. print($refererConfig->serializeToXml() . "\n");

清空防盗链

以下代码用于清空防盗链:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. use OSS\Model\RefererConfig;
  11. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  12. $accessKeyId = "<yourAccessKeyId>";
  13. $accessKeySecret = "<yourAccessKeySecret>";
  14. // Endpoint以杭州为例,其它Region请按实际情况填写。
  15. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  16. $bucket= "<yourBucketName>";
  17. $refererConfig = new RefererConfig();
  18. try{
  19. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  20. // 防盗链不能直接清空,需要新建一个允许空Referer的规则来覆盖之前的规则。
  21. $ossClient->putBucketReferer($bucket, $refererConfig);
  22. } catch(OssException $e) {
  23. printf(__FUNCTION__ . ": FAILED\n");
  24. printf($e->getMessage() . "\n");
  25. return;
  26. }
  27. print(__FUNCTION__ . ": OK" . "\n");
本文导读目录