nextwhy 2023-02-26 11:26 采纳率: 0%
浏览 10

thinkPHP如何实现类似oss文件盗链控制?

现在使用的开发框架是thinkPHP6

想实现类似 阿里云oss 文件存储的 防盗链功能。

就是比如 我在网站里面 上传了 一个 3.jpg \ 4.mp4 \ 5.rar 3个文件。
想实现这样的控制,比如 只有 3 。com bd .com 这个的域名请求才能访问。非允许的就拒绝访问。

如果各位朋友,刚好有做过类似的,或者有想法的,劳烦您的小手回复一下。谢谢了。

  • 写回答

3条回答 默认 最新

  • GPT_Pro 2023-02-26 11:37
    关注

    该回答内容部分引用GPT,GPT_Pro更好的解决问题
    使用ThinkPHP 6实现OSS文件盗链控制,可以借助阿里云OSS的Referer白名单功能实现,该功能可以指定哪些Referer地址可以访问OSS中的文件。具体的步骤如下:

    1. 在thinkPHP 6应用中安装阿里云OSS SDK,用来调用阿里云OSS的API。

    2. 创建阿里云OSS存储空间,并上传文件。

    3. 使用阿里云OSS SDK调用putBucketReferer API设置Referer白名单,将允许访问的域名添加到白名单中。

    4. 在应用中使用getObject API来获取文件,如果当前请求的Referer不在白名单中,则会返回403 Forbidden。

    以下是使用ThinkPHP 6实现OSS文件盗链控制的代码示例:

    // 引入阿里云OSS SDK
    use OSS\Core\OssException;
    use OSS\OssClient;
     
    // 配置阿里云OSS的相关信息
    $accessKeyId = "yourAccessKeyId";  // AccessKeyId
    $accessKeySecret = "yourAccessKeySecret";  // AccessKeySecret
    $endpoint = "yourEndpoint";  // 节点地址, 例如: oss-cn-hangzhou.aliyuncs.com
    $bucket= "yourBucketName";  // Bucket名称
     
    // 创建OssClient实例
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
     
    // 设置Referer白名单, 允许3.com、bd.com访问存储空间中的文件
    $refererList = array('http://3.com', 'http://bd.com');  // 白名单列表
    $allowEmptyReferer = false;  // 是否允许空Referer, 默认不允许
    try {
        $ossClient->putBucketReferer($bucket, $refererList, $allowEmptyReferer);
    } catch (OssException $e) {  
        printf(__FUNCTION__ . ": FAILED\n");  
        printf($e->getMessage() . "\n");  
        return;  
    }  
    print(__FUNCTION__ . ": OK" . "\n");  
    
     
    // 获取文件, Referer不在白名单中则返回403 Forbidden  
    try {  
        $content = $ossClient->getObject($bucket, $object);  
    } catch (OssException $e) {  
        printf(__FUNCTION__ . ": FAILED\n");  
        printf($e->getMessage() . "\n");  
        return;  
    }  
    print(__FUNCTION__ . ": OK" . "\n"); 
    

    如果回答有帮助,望采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月26日

悬赏问题

  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP