Nginx

這段程式碼的真正作用是什麼?

  • March 18, 2019

我正在測試 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"意思?

*注意:*顯然這不是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請求被設置為equalBITWISE NOT這個詞。POST,``$rule_0``10

它以該模式繼續,將 2 和 3 添加到$rule_0 if存在無效referrer或無效的值user_agent.

if ($rule_0 = "3210") { return 403; }

這裡if出現了一個無效的組合,$request_method, $http_user_agent然後referrer$rule_0等於3210,php伺服器將返回一個403: FORBIDDEN.

引用自:https://unix.stackexchange.com/questions/124869