centos

怎样使用Apache进行防盗链

小樊
38
2025-05-23 01:47:19
栏目: 编程语言

使用Apache进行防盗链主要涉及到配置HTTP响应头,以限制或阻止未经授权的网站引用你的资源。以下是一些常见的方法:

方法一:使用mod_rewrite模块

  1. 启用mod_rewrite模块: 确保你的Apache服务器已经启用了mod_rewrite模块。你可以在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]:检查HTTP请求头中的Referer字段,如果不是来自你的域名(包括子域名),则执行下一步。
    • RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]:阻止对指定图片格式的访问,并返回403 Forbidden状态码。

方法二:使用mod_headers模块

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

    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"
        RewriteEngine On
        RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]
        RewriteRule .* - [F,L]
    </FilesMatch>
    

    解释:

    • Header set X-Frame-Options "SAMEORIGIN":防止点击劫持。
    • Header set Referrer-Policy "no-referrer-when-downgrade":控制Referer头的发送。
    • RewriteEngine On:启用重写引擎。
    • RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]:检查HTTP请求头中的Referer字段,如果不是来自你的域名(包括子域名),则执行下一步。
    • RewriteRule .* - [F,L]:阻止对指定图片格式的访问,并返回403 Forbidden状态码。

方法三:使用mod_security模块

如果你需要更复杂的防盗链策略,可以考虑使用mod_security模块。以下是一个简单的示例:

  1. 安装mod_security模块: 根据你的操作系统和Apache版本,安装mod_security模块。

  2. 配置防盗链规则: 在你的网站根目录下的.htaccess文件中添加以下规则:

    SecRule REQUEST_URI "\.(jpg|jpeg|png|gif)$" \
        "id:1234567,\
        phase:2,\
        deny,\
        status:403,\
        log,\
        msg:'Access denied to images from unauthorized domains'"
    SecRule REQUEST_HEADERS:Referer "!@rx ^http://(www\.)?yourdomain\.com" \
        "id:1234568,\
        phase:2,\
        deny,\
        status:403,\
        log,\
        msg:'Access denied to images from unauthorized domains'"
    

    解释:

    • SecRule REQUEST_URI:匹配请求的URI。
    • SecRule REQUEST_HEADERS:Referer:匹配请求头中的Referer字段。

注意事项

通过以上方法,你可以有效地使用Apache进行防盗链,保护你的资源不被未经授权的网站引用。

0
看了该问题的人还看了