使用Apache进行防盗链主要涉及到配置HTTP响应头,以限制或阻止未经授权的网站引用你的资源。以下是一些常见的方法:
方法一:使用mod_rewrite
模块
-
启用
mod_rewrite
模块: 确保你的Apache服务器已经启用了mod_rewrite
模块。你可以在httpd.conf
或apache2.conf
文件中找到以下行并取消注释:LoadModule rewrite_module modules/mod_rewrite.so
-
配置防盗链规则: 在你的网站根目录下的
.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
模块
-
启用
mod_headers
模块: 确保你的Apache服务器已经启用了mod_headers
模块。你可以在httpd.conf
或apache2.conf
文件中找到以下行并取消注释:LoadModule headers_module modules/mod_headers.so
-
配置防盗链规则: 在你的网站根目录下的
.htaccess
文件中添加以下规则: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] 解释:
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
模块。以下是一个简单的示例:
-
安装
mod_security
模块: 根据你的操作系统和Apache版本,安装mod_security
模块。 -
配置防盗链规则: 在你的网站根目录下的
.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进行防盗链,保护你的资源不被未经授权的网站引用。