最近几天,我的 VPS 中对 1 个文件发出了许多 GET 请求,导致内存负载过高(所有请求都来自单个引用 url,具有不同的 IP)。
到目前为止,我已经通过 .htaccess 阻止了这些请求
# by refurl
RewriteCond %{HTTP_REFERER} domain\.com [NC]
RewriteRule .* - [F]
# by querystring
RewriteCond %{QUERY_STRING} \ba=ZicX9v\b [NC]
RewriteRule ^ - [F]
但是这样请求仍然由 apache 处理并且仍然会导致高内存负载。
我可以使用 mod_security 阻止此请求(可能在阶段 1)以防止/减少内存负载吗?
到目前为止我已经将此规则设置为 mod_secuurity(但我不确定是否正确):
SecRule REQUEST_HEADERS:REFERER "(?i:(THEDOMAIN))" phase:1,deny,status:412,id:'1234'
PS:我的VPS是linux,安装的是apache2.2
编辑:我的整个网站强制使用 HTTPS,不确定是否应该添加一些内容
答案1
我测试了你的规则并且它似乎有效。
您还可以使用 curl 进行测试,如下所示:
curl --referer https://bad-referer-domain.com https://your-site.com