apache - ModSecurity 阻止无效的主机引用
问题描述
我需要一个规则来阻止所有对 wp-login.php 的 POST 请求,
但是我需要检查引用域是否等于请求的域名
我们需要检查这些事情:
- 检查请求的域值(例如:sitename1.com)
- 检查引用域值(例如:sitename1.com)
- 如果请求的域等于引用域
- 如果请求是 POST
- 如果请求的文件是 wp-login.php
我有以下代码来检查引用者,但我也需要检查引用者中的域
#Block WP logins with no referring URL
<Locationmatch "/wp-login.php">
SecRule REQUEST_METHOD "POST" "deny,status:401,id:5000130,chain,msg:'wp-login request blocked, no referer'"
SecRule &HTTP_REFERER "@eq 0"
</Locationmatch>
在这种情况下,我可以完全检查访问者并确保他是一个人感谢任何帮助
解决方案
我不确定我是否理解您的问题,但这条链式规则可能会对您有所帮助:
SecRule &REQUEST_HEADERS:Referer "!@eq 0" \
"id:5000130,\
phase:1,\
t:none,\
deny,\
status:401,\
chain,\
msg:'wp-login request blocked, no referer'"
SecRule REQUEST_URI "@beginsWith /wp-login.php" \
"chain"
SecRule REQUEST_METHOD "@streq POST" \
"chain"
SecRule REQUEST_HEADERS:Host "@rx .*" \
"capture,\
chain"
SecRule REQUEST_HEADERS:Referer "@streq %{TX.0}"
请记住:
- 此链式规则仅在
Referer
设置了标头时才有效 - 标
Host
头也必须存在
可能您需要另一个链式规则,它检查Referer
标头是否存在,如果 URI 是/wp-login
,但我认为根据上面的规则您可以生成它。
推荐阅读
- json - 如何在刀片 laravel 上获取 json 的值
- python - 如何将矢量(k1,k2)转换为体积中的RGBA(r,g,b,a)?
- javascript - 如何从javascript中获取变量并以不断的方式将其放入变量php中?
- java - Spring boot [s0] 连接到节点时出错(endPoint=127.0.0.1:9042,hostId=null,>
- f# - 插值三角形
- javascript - 函数中的var作为javascript中另一个函数的参数
- django - django.db.utils.OperationalError: FATAL: 抱歉,已经有太多客户了
- php - 在 Woocommerce 购物车中自动添加或删除免费产品,但在购物车中不包含订阅产品
- javascript - NPM 审计警告
- gcc - 哪个 GCC 版本包括哪个 GLIBCXX 版本?