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);
키 | 유형 | 값 |
---|---|---|
time_unit_quota | 배열 | ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60] |
time_reset_limit | 정수 | 3600 |
interval_check_referer | 정수 | 5 |
interval_check_session | 정수 | 30 |
limit_unusual_behavior | 배열 | ['cookie' => 5, 'session' => 5, 'referer' => 10] |
cookie_name | 문자열 | ssjd |
cookie_domain | 문자열 | " |
이 설정을 사용하면 특정 시간 단위를 기준으로 웹 사이트의 사용자에 대한 페이지 조회 수 제한을 정의할 수 있습니다. 배열의 키는 's' (초), 'm' (분), 'h' (시간) 및 'd' (일)이며, 각 키는 해당 시간 단위에 대한 사용자 당 페이지 조회 수 제한과 대응합니다. 기본값은 ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
입니다.
키 | 값 | 설명 |
---|---|---|
s | 정수 | 방문자당 초당 페이지 조회 수 |
m | 정수 | 방문자당 분당 페이지 조회 수 |
h | 정수 | 방문자당 시간당 페이지 조회 수 |
d | 정수 | 방문자당 일당 페이지 조회 수 |
단순히 사용자가 하루에 100페이지
를 제한하려면, s
, m
, h
를 매우 큰 수로 설정하고 d
를 100
으로 설정하면 됩니다.
사용자가 제한에 도달하면 일시적으로 차단되며, Captcha를 해결하여 차단을 해제할 수 있습니다. 따라서 값이 너무 느슨하게 설정되지 않도록 주의하십시오. 그렇지 않으면 이 라이브러리를 사용하는 의미가 없습니다.
time_reset_limit
이것은 필터에 플래그가 지워지는 시간(초)을 나타냅니다. 기본값은 3600(1시간)입니다.
interval_check_referer
interval_check_referer
와 유사하게, 이 속성은 Shieldon이 사용자의 SESSION
쿠키를 확인하기 시작하기 전에 대기하는 시간(초)을 설정합니다. 기본값은 30
초입니다.
사용자가 최초로 웹 사이트에 방문하여 브라우저의 URL을 입력하면 HTTP_REFERER
는 비어 있습니다. interval_check_referer
초 후에 Shieldon은 HTTP_REFERER
를 확인하기 시작합니다.
이 값을 무시할 수 있습니다.
interval_check_session
사용자가 최초로 웹 사이트에 방문한 후 interval_check_session
초 후에 Shieldon은 SESSION
쿠키를 확인하기 시작합니다.
limit_unusual_behavior
이 설정을 사용하면 특정 조건에 따라 이상한 동작으로 표시되는 제한을 정의할 수 있습니다.
기본값은 ['cookie' => 5, 'session' => 5, 'referer' => 10]
입니다.
웹 사이트의 방문자에 대해 이상한 동작으로 표시되는 제한과 할당량을 설정합니다.
키 | 값 | 설명 |
---|---|---|
cookie | 정수 | JavaScript에 의해 생성된 쿠키 |
session | 정수 | PHP 세션 |
referer | 정수 | HTTP_REFERER |
cookie_name
이 속성은 Shieldon이 사용하는 쿠키의 이름을 지정하는 데 사용됩니다. 기본값은 ssjd
입니다.
cookie_domain
이 속성은 쿠키가 제한되는 도메인을 정의합니다. 기본적으로 쿠키는 서버의 모든 하위 도메인에서 사용할 수 있습니다.
deny_attempt_enable
이 옵션을 활성화하면 Shieldon은 연속적인 CAPTCHA 실패를 기록합니다. 사용자가 지정된 제한에 도달하면 Shieldon은 해당 IP를 룰 테이블에서 차단된 IP로 분류합니다. 새로운 데이터 주기가 시작될 때까지 이 차단은 유지됩니다.
차단된 사용자는 경고 페이지에 여전히 액세스할 수 있습니다. 그러나 CAPTCHA를 일관되게 풀지 못한다면, 그들은 인간이 아닐 가능성이 높습니다. 이에 Shieldon은 그들을 시스템 방화벽의 차단 목록에 추가하여 영구적으로 차단합니다.
기본값:
'deny_attempt_enable' => [
'data_circle' => false,
'system_firewall' => false,
],
record_attempt_detection_period
Facebook, Line 등에서 웹 페이지의 스냅샷을 가져오는 등 소셜 플랫폼 봇을 iptables 방화벽에 추가하는 것을 방지하기 위해, 아래의 값을 조정하여 필요에 맞게 조정해야 합니다. (단위: 초)
기본값:
'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/',
];
}
참고: 이러한 속성은 Shieldon 인스턴스 초기화 중에 또는 이후 setProperty
또는 setProperties
API를 사용하여 설정할 수 있습니다.