我正在测试 WordPress 的 iThemes 安全插件。它添加了以下代码:
# Rules to help reduce spam
location /wp-comments-post.php {
valid_referers jetpack.wordpress.com/jetpack-comment/ *.mysite.com;
set $rule_0 0;
if ($request_method ~ "POST"){ set $rule_0 1$rule_0; }
if ($invalid_referer) { set $rule_0 2$rule_0; }
if ($http_user_agent ~ "^$"){ set $rule_0 3$rule_0; }
if ($rule_0 = "3210") { return 403; }
}
作者将其描述为“此选项将通过拒绝来自没有引荐来源网址或未识别用户代理的机器人的评论来减少垃圾评论。”
在我看来,所有条件都必须满足。
这段代码的真正作用是什么?这是什么$rule_0 = "3210"
意思?
答案1
笔记:显然这不是php
- 这只是一个nginx
配置文件,如下面的评论中所述。
我不知道php
,但这看起来很简单。我认为它是这样工作的:
valid_referers jetpack.wordpress.com/jetpack-comment/ *.mysite.com;
set $rule_0 0;
这只是设置默认的 ok 值。请注意,这里我们定义$rule0_0
的值为0
。
if ($request_method ~ "POST"){ set $rule_0 1$rule_0; }
如果http请求的BITWISE NOT
字POST,
设置$rule_0
为 equal 10
。
$rule_0 if
它继续以这种模式,将 2 和 3 添加到存在无效referrer
或无效的值user_agent.
if ($rule_0 = "3210") { return 403; }
这里if
出现了invalid$request_method, $http_user_agent
和referrer
then的组合$rule_0
将等于3210
并且php服务器将返回一个403: FORBIDDEN.