温馨提示×

Apache2在CentOS上如何配置防盗版

小樊
39
2026-01-02 04:12:25
栏目: 智能运维

在 CentOS 上为 Apache2 配置防盗链

一 概念与适用范围

  • 通常所说的“防盗版”在 Web 场景多指防盗链 Hotlink Protection:通过校验 HTTP Referer 请求头,仅允许来自本站或白名单域名的请求访问受保护资源(如图片、音视频、压缩包等),从而防止外站直接链接消耗你的带宽与资源。
  • 该方法基于 Referer 校验,存在被伪造的可能,适合做“降低盗用概率”的第一道防线;对高价值资源建议叠加更强的访问控制(如登录、签名 URL、Token、IP 白名单等)。

二 方案一 使用 mod_rewrite 按 Referer 拦截外链(推荐)

  • 适用:希望快速在目录或虚拟主机粒度生效,规则直观。
  • 步骤:
    1. 确认模块可用(CentOS 一般默认启用;如未启用可执行:sudo yum install mod_rewrite;并确保主配置中 AllowOverride 允许 .htaccess 或在 内配置)。
    2. 在站点根目录的 .htaccess 或虚拟主机 中加入规则(示例仅放行本站与空 Referer,其他来源返回 403 Forbidden):
      RewriteEngine On
      # 允许本站(含 www 子域)与空 Referer(浏览器直输/新标签打开等)
      RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
      RewriteCond %{HTTP_REFERER} !^$
      # 对常见静态资源生效,可按需增减后缀
      RewriteRule \.(jpg|jpeg|png|gif|bmp|webp|svg|ico|mp3|mp4|zip|rar|pdf)$ - [F,L]
      
      • 说明:NC 表示忽略大小写;[F] 返回 403;[L] 为最后一条规则。若需允许多个域名,继续添加多条 RewriteCond 即可。
    3. 保存并使配置生效:
      • 若写入 .htaccess:确保 中 AllowOverride 为 All 或 FileInfo。
      • 若写入虚拟主机:执行 sudo systemctl reload httpd(无需完全重启)。

三 方案二 使用 SetEnvIfNoCase + FilesMatch 的访问控制(传统 Allow/Deny)

  • 适用:更偏好基于环境变量的访问控制模型,或需要与旧版 Apache 2.2 兼容。
  • 步骤:在 中加入如下片段(示例白名单包含本站与一个合作域,同时放行空 Referer):
    <Directory "/var/www/html">
        # 定义白名单 Referer(忽略大小写)
        SetEnvIfNoCase Referer "^https?://(www\.)?example\.com" local_ref
        SetEnvIfNoCase Referer "^https?://partner\.example\.org" local_ref
        SetEnvIfNoCase Referer "^$" local_ref
    
        # 仅对指定后缀的资源应用规则
        <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|jpeg|png|gif|bmp|webp|svg|ico|pdf)$">
            Order Allow,Deny
            Allow from env=local_ref
            # 其他来源将返回 403
        </FilesMatch>
    </Directory>
    
    • 提示:Order Allow,Deny 与 Allow from/Deny from 为 Apache 2.2 风格;若使用 Apache 2.4,建议迁移到 Require all granted/denied 的授权模型(见下一节)。

四 验证与注意事项

  • 验证方法:
    • 从白名单站点或浏览器直接访问资源,应返回 200 OK
    • 使用 curl 模拟外链访问(指定 Referer)应返回 403 Forbidden,例如:
      curl -I -e "http://evil.com/" http://example.com/images/1.jpg
      
  • 注意事项与增强建议:
    • Referer 可被客户端伪造,且部分场景下为空(如移动端、隐私模式、直接下载器),建议结合业务选择是否放行空 Referer,或叠加登录态、时间戳签名 URL、Token、IP 白名单等手段提升安全性与可控性。
    • 规则匹配会影响性能,尽量将 限制在必要的后缀与目录,避免对全站生效;变更配置后优先使用 reload 而非 restart,减少中断。

0