温馨提示×

怎样配置Apache实现防盗链

小樊
45
2025-11-03 02:16:08
栏目: 编程语言

配置Apache实现防盗链可以通过多种方法,以下是几种常见的方法:

方法一:使用mod_rewrite模块

  1. 启用mod_rewrite模块: 确保你的Apache服务器已经启用了mod_rewrite模块。你可以在Apache配置文件(通常是httpd.confapache2.conf)中找到以下行并取消注释:

    LoadModule rewrite_module modules/mod_rewrite.so
    
  2. 配置防盗链规则: 在你的网站目录下的.htaccess文件中添加以下内容:

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
    

    解释:

    • RewriteEngine On:启用重写引擎。
    • RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]:检查请求的来源是否不是你的域名(不区分大小写)。
    • RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]:如果条件匹配,则返回403 Forbidden状态码,并停止进一步处理。

方法二:使用mod_headers模块

  1. 启用mod_headers模块: 确保你的Apache服务器已经启用了mod_headers模块。你可以在Apache配置文件中找到以下行并取消注释:

    LoadModule headers_module modules/mod_headers.so
    
  2. 配置防盗链规则: 在你的网站目录下的.htaccess文件中添加以下内容:

    <FilesMatch "\.(jpg|jpeg|png|gif)$">
        Header set X-Frame-Options "SAMEORIGIN"
        Header set Referrer-Policy "no-referrer-when-downgrade"
    </FilesMatch>
    

    解释:

    • Header set X-Frame-Options "SAMEORIGIN":防止页面被嵌入到其他域名的<iframe>中。
    • Header set Referrer-Policy "no-referrer-when-downgrade":控制引用页信息的发送。

方法三:使用第三方模块

如果你需要更复杂的防盗链功能,可以考虑使用第三方模块,如mod_security

  1. 安装mod_security模块: 根据你的操作系统和Apache版本,安装mod_security模块。例如,在Ubuntu上可以使用以下命令:

    sudo apt-get install libapache2-mod-security2
    
  2. 配置防盗链规则: 在/etc/modsecurity/modsecurity.conf/etc/apache2/conf-available/security2.conf文件中添加以下内容:

    SecAction \
        "id:500001,\
        phase:2,\
        nolog,\
        pass,\
        initcol:ip=%{REMOTE_ADDR},\
        setvar:ip.blacklist=%{REMOTE_ADDR},\
        expirevar:ip.blacklist=600"
    
    SecRule REMOTE_ADDR "@blacklist" \
        "id:500002,\
        phase:1,\
        pass,\
        log,\
        msg:'Blocked IP',\
        status:403,\
        tag:'application-multi',\
        tag:'language-multi',\
        tag:'platform-multi',\
        tag:'attack-reconnaissance',\
        tag:'OWASP_CRS/WEB_ATTACK/REQUEST_HEADER_INJECTION',\
        tag:'WASCTC/WASC-21',\
        tag:'OWASP_TOP_10/A7',\
        tag:'PCI/6.5.10',\
        setvar:ip.blacklist=%{ip.blacklist},\
        expirevar:ip.blacklist=600"
    

    解释:

    • 这段配置会阻止黑名单中的IP地址访问你的网站。

注意事项

  • 测试配置:在生产环境中应用这些配置之前,请确保在测试环境中进行充分测试。
  • 备份配置文件:在进行任何配置更改之前,务必备份原始配置文件。
  • 定期更新:定期更新你的Apache服务器和相关模块,以确保安全性和稳定性。

通过以上方法,你可以有效地配置Apache服务器以实现防盗链功能。

0