前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面试题:防盗链

面试题:防盗链

作者头像
GeekLiHua
发布2025-01-21 13:34:55
发布2025-01-21 13:34:55
12100
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

面试题:防盗链

防盗链(Referer Anti-Leech)是一种保护图片、音频、视频等静态媒体资源受盗取的方式,通过服务器端对请求进行检查,当请求来源不在白名单列表中时返回特定的响应内容或禁止访问。

具体地说,防盗链针对直接使用 URL 访问网页中的图像资源,可以通过以下几个步骤实现:

  1. 配置服务器防盗链规则:首先需要在服务器上配置相关的规则,如指定允许网站域名、IP 地址、HTTP Referer 变量等,以此过滤掉非法来源的访问请求。

例如,在 Nginx 中就可以在 server 或 location 语句块中设置 valid_referers 和 secret_token 等选项以及屏蔽 Google Translate、Baidu Translate Toolbar 这样的翻译工具来避免自家网站资源被别人做无偿请求:

代码语言:javascript
代码运行次数:0
运行
复制
    # 定义验证 referer 值列表(例如 www.example.com)
    valid_referers none blocked server_names *.example.com;
    
    # 在 URL 中添加 secret_token 参数用于认证来源
    if ($http_referer !~ "^https?://(www\.)?example\.com") {
        return 403;
    }
    
    # (可选)屏蔽多个机器翻译服务引用 getResource.php 文件,从而卡住审核机制。
    if ($http_user_agent ~ "Google.*Translate" || $http_user_agent ~ "Baidu.*Translate") {
        return 403;
    }
  1. 协议限制与设置响应头:可以使用 HTTPS 协议或专门的 CDN(Content Delivery Network)服务,通过设置 Access-Control-Allow-Origin 响应头以及 max-age 等头属性,在从示例网站传输并展现图片时,控制图片资源的请求行为。

例如:

代码语言:javascript
代码运行次数:0
运行
复制
    # 在部分图片类资源 server 中添加
    add_header Access-Control-Allow-Origin *;

    # 强制图片缓存时间(1天)
    add_header Cache-Control public,max-age=86400

此外,还有一些其他的防范工具和技术,如切断危险域名,优化媒体资源格式,动态生成 CDN 路径等均可以辅助提升防盗链的能力。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面试题:防盗链
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档