开发者社区> 问答> 正文

PHP-SDK - 防盗链之如何实现?

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


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


设置Referer白名单


您可以通过OssClient::putBucketReferer设置Referer白名单: <?php
/**
* 设置存储空间的防盗链配置
*
* @param OssClient $ossClient OSSClient实例
* @param string    $bucket 存储空间名称
* @return null
*/
function putBucketReferer($ossClient, $bucket)
{
    $refererConfig = new RefererConfig();
    $refererConfig->setAllowEmptyReferer(true);
    $refererConfig->addReferer("www.aliiyun.com");
    $refererConfig->addReferer("www.aliiyuncs.com");
    try{
        $ossClient->putBucketReferer($bucket, $refererConfig);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
}


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


获取Referer白名单


您可以通过OssClient::getBucketReferer获取Referer白名单: <?php
/**
* 获取bucket的防盗链配置
*
* @param OssClient $ossClient OSSClient实例
* @param string    $bucket 存储空间名称
* @return null
*/
function getBucketReferer($ossClient, $bucket)
{
    $refererConfig = null;
    try{
        $refererConfig = $ossClient->getBucketReferer($bucket);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
    print($refererConfig->serializeToXml() . "\n");
}



清空Referer白名单


Referer白名单不能直接清空,只能通过重新设置来覆盖之前的规则。 <?php
/**
* 删除bucket的防盗链配置
* Referer白名单不能直接清空,只能通过重新设置来覆盖之前的规则。
*
* @param OssClient $ossClient OSSClient实例
* @param string    $bucket 存储空间名称
* @return null
*/
function deleteBucketReferer($ossClient, $bucket)
{
    $refererConfig = new RefererConfig();
    try{
        $ossClient->putBucketReferer($bucket, $refererConfig);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
}


展开
收起
青衫无名 2017-10-19 10:10:35 1727 0
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载