設定

Shieldon 防火牆具有豐富的設定選項,您可以自訂其行為。以下是您可以設定的屬性的詳細說明:

您可以在初始化 Shieldon 實例時調整設定,或稍後使用 setPropertysetProperties API。

初始化

$config = [
    'time_unit_quota' => [
        ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
    ]
];

$kernel = new \Shieldon\Shieldon($config);

setProperty

$kernel->setProperty('time_unit_quota', [
    's' => 2, 'm' => 10, 'h' => 30, 'd' => 60
]);

setProperties

$config = [
    'time_unit_quota' => [
        ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
    ]
];

$kernel->setProperties($config);

預設值

key type value
time_unit_quota array ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
time_reset_limit integer 3600
interval_check_referer integer 5
interval_check_session integer 30
limit_unusual_behavior array ['cookie' => 5, 'session' => 5, 'referer' => 10]
cookie_name string ssjd
cookie_domain string ""

參數

time_unit_quota

此設定允許您根據特定時間單位為您網站的使用者定義頁面瀏覽限制。陣列的鍵是 's'(秒),'m'(分鐘),'h'(小時),和 'd'(天),每個鍵對應該時間單位每位使用者的頁面瀏覽限制。預設是 ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]

  • array
key value description
s integer 每位訪客的頁面瀏覽次數
m integer 每位訪客分鐘的頁面瀏覽次數
h integer 每位訪客小時的頁面瀏覽次數
d integer 每位訪客的頁面瀏覽次數
  • 如果您只想限制一位使用者每日瀏覽 100 頁,只需將 smh 設定為非常高的數字,並將 d 設定為 100

  • 請記住,當使用者達到限制時,他們只會被暫時禁止,他們可以通過解決 Captcha 來解除禁止,因此,不要設定太寬鬆的值,否則使用這個函式庫就沒有意義了。

time_reset_limit

這是過多少秒後,過濾器標記的數量會重設。預設值為 3600(1 小時)。

interval_check_referer

interval_check_referer 類似,此屬性設定 Shieldon 在檢查使用者的 SESSION cookie 之前的延遲秒數。預設是 30 秒。

當使用者第一次輸入瀏覽器網址訪問您的網站時,HTTP_REFERER 是空的。經過 interval_check_referer 秒後,Shieldon 將開始檢查 HTTP_REFERER

您可以忽略此值。

interval_check_session

當使用者第一次訪問您的網站時,經過 interval_check_session 秒後,Shieldon 將開始檢查 SESSION cookie。

limit_unusual_behavior

此設定允許您根據特定條件定義被標記為異常行為的限制。

預設為 ['cookie' => 5, 'session' => 5, 'referer' => 10]

在您的網站上為您的訪客設定被標記為異常行為的限制和配額。

  • array
key value description
cookie integer 由 JavaScript 生成的 Cookie
session integer PHP Session
referer integer HTTP_REFERER

cookie_name

此屬性用於指定 Shieldon 使用的 cookie 的名稱。預設為 ssjd

cookie_domain

此屬性定義了 cookie 受限的域。預設情況下,cookie 對伺服器上的所有子域都可用。

deny_attempt_enable

如果您啟用此選項,Shieldon 將記錄每次連續的 CAPTCHA 失敗。 一旦使用者達到指定的限制,Shieldon 將在規則表中將他們分類為被阻擋的 IP, 該狀態持續到新的數據週期開始。

即使被封鎖,使用者仍然可以訪問警告頁面。 然而,如果他們持續解決 CAPTCHA 失敗,那麼他們很可能 不是人。作為回應,Shieldon 將他們添加到系統防火牆的 封鎖列表,有效地永久禁止他們。

預設:

'deny_attempt_enable' => [
        'data_circle'     => false,
        'system_firewall' => false,
    ],

record_attempt_detection_period

為了防止將社交平台機器人添加到 iptables 防火牆,如 Facebook、Line 等抓取您網頁快照的平台, 您應該調整下面的值以適應您的需要。 (單位:秒)

預設:

'record_attempt_detection_period' => 5,

reset_attempt_counter

此參數決定了嘗試計數器重置的時間(以秒為單位)。在這種情況下,每30分鐘重置一次計數器。

預設:

'reset_attempt_counter' => 1800,

iptables_watching_folder

此參數是 iptables 服務監視 Shieldon 防火牆命令的目錄。在這種情況下,它正在監視臨時的 '/tmp/' 目錄。

其他

對於此處未提到的任何屬性,您可以參考 Shieldon\Firewall\Helpers 類中的 get_default_properties() 函數。

/**
 * Shieldon 核心的預設設定。
 *
 * @return array
 */
function get_default_properties(): array
{
    return [
        'time_unit_quota' => [
            's' => 2,
            'm' => 10,
            'h' => 30,
            'd' => 60
        ],
        'time_reset_limit' => 3600,
        'interval_check_referer' => 5,
        'interval_check_session' => 5,
        'limit_unusual_behavior' => [
            'cookie' => 5,
            'session' => 5,
            'referer' => 10
        ],
        'cookie_name' => 'ssjd',
        'cookie_domain' => '',
        'cookie_value' => '1',
        'display_online_info' => true,
        'display_user_info' => false,
        'display_http_code' => false,
        'display_reason_code' => false,
        'display_reason_text' => false,
        'deny_attempt_enable' => [
            'data_circle' => false,
            'system_firewall' => false,
        ],
        'deny_attempt_notify' => [
            'data_circle' => false,
            'system_firewall' => false,
        ],
        'deny_attempt_buffer' => [
            'data_circle' => 10,
            'system_firewall' => 10,
        ],
        'record_attempt_detection_period' => 5,
        'reset_attempt_counter' => 1800,
        'iptables_watching_folder' => '/tmp/',
    ];
}