配置Apache实现防盗链可以通过多种方法,以下是几种常见的方法:
mod_rewrite模块启用mod_rewrite模块:
确保你的Apache服务器已经启用了mod_rewrite模块。你可以在Apache配置文件(通常是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]:检查请求的来源是否不是你的域名(不区分大小写)。RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]:如果条件匹配,则返回403 Forbidden状态码,并停止进一步处理。mod_headers模块启用mod_headers模块:
确保你的Apache服务器已经启用了mod_headers模块。你可以在Apache配置文件中找到以下行并取消注释:
LoadModule headers_module modules/mod_headers.so
配置防盗链规则:
在你的网站目录下的.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。
安装mod_security模块:
根据你的操作系统和Apache版本,安装mod_security模块。例如,在Ubuntu上可以使用以下命令:
sudo apt-get install libapache2-mod-security2
配置防盗链规则:
在/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"
解释:
通过以上方法,你可以有效地配置Apache服务器以实现防盗链功能。