全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

防盗链

更新时间:2017-06-07 13:26:11

OSS是按使用收费的服务,为了防止用户在OSS上的数据被其他人盗链,OSS支持基于HTTP header中表头字段referer的防盗链方法。

更多关于防盗链的内容请参考 防盗链

提示:

  • 以下场景的完整代码请参见:GitHub

设置Referer白名单

您可以通过OssClient::putBucketReferer设置Referer白名单:

  1. <?php
  2. /**
  3. * 设置存储空间的防盗链配置
  4. *
  5. * @param OssClient $ossClient OSSClient实例
  6. * @param string $bucket 存储空间名称
  7. * @return null
  8. */
  9. function putBucketReferer($ossClient, $bucket)
  10. {
  11. $refererConfig = new RefererConfig();
  12. $refererConfig->setAllowEmptyReferer(true);
  13. $refererConfig->addReferer("www.aliiyun.com");
  14. $refererConfig->addReferer("www.aliiyuncs.com");
  15. try{
  16. $ossClient->putBucketReferer($bucket, $refererConfig);
  17. } catch(OssException $e) {
  18. printf(__FUNCTION__ . ": FAILED\n");
  19. printf($e->getMessage() . "\n");
  20. return;
  21. }
  22. print(__FUNCTION__ . ": OK" . "\n");
  23. }

提示:

  • Referer参数支持通配符“*”和“?”,更多详细的规则配置可以参考产品文档 OSS防盗链

获取Referer白名单

您可以通过OssClient::getBucketReferer获取Referer白名单:

  1. <?php
  2. /**
  3. * 获取bucket的防盗链配置
  4. *
  5. * @param OssClient $ossClient OSSClient实例
  6. * @param string $bucket 存储空间名称
  7. * @return null
  8. */
  9. function getBucketReferer($ossClient, $bucket)
  10. {
  11. $refererConfig = null;
  12. try{
  13. $refererConfig = $ossClient->getBucketReferer($bucket);
  14. } catch(OssException $e) {
  15. printf(__FUNCTION__ . ": FAILED\n");
  16. printf($e->getMessage() . "\n");
  17. return;
  18. }
  19. print(__FUNCTION__ . ": OK" . "\n");
  20. print($refererConfig->serializeToXml() . "\n");
  21. }

清空Referer白名单

Referer白名单不能直接清空,只能通过重新设置来覆盖之前的规则。

  1. <?php
  2. /**
  3. * 删除bucket的防盗链配置
  4. * Referer白名单不能直接清空,只能通过重新设置来覆盖之前的规则。
  5. *
  6. * @param OssClient $ossClient OSSClient实例
  7. * @param string $bucket 存储空间名称
  8. * @return null
  9. */
  10. function deleteBucketReferer($ossClient, $bucket)
  11. {
  12. $refererConfig = new RefererConfig();
  13. try{
  14. $ossClient->putBucketReferer($bucket, $refererConfig);
  15. } catch(OssException $e) {
  16. printf(__FUNCTION__ . ": FAILED\n");
  17. printf($e->getMessage() . "\n");
  18. return;
  19. }
  20. print(__FUNCTION__ . ": OK" . "\n");
  21. }
本文导读目录