Shieldon 防火牆具有豐富的設定選項,您可以自訂其行為。以下是您可以設定的屬性的詳細說明:
您可以在初始化 Shieldon 實例時調整設定,或稍後使用 setProperty
或 setProperties
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 | "" |
此設定允許您根據特定時間單位為您網站的使用者定義頁面瀏覽限制。陣列的鍵是 's'(秒),'m'(分鐘),'h'(小時),和 'd'(天),每個鍵對應該時間單位每位使用者的頁面瀏覽限制。預設是 ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
。
key | value | description |
---|---|---|
s | integer | 每位訪客每秒的頁面瀏覽次數 |
m | integer | 每位訪客每分鐘的頁面瀏覽次數 |
h | integer | 每位訪客每小時的頁面瀏覽次數 |
d | integer | 每位訪客每日的頁面瀏覽次數 |
如果您只想限制一位使用者每日瀏覽 100 頁
,只需將 s
,m
,h
設定為非常高的數字,並將 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]
。
在您的網站上為您的訪客設定被標記為異常行為的限制和配額。
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/',
];
}