O Firewall Shieldon possui um conjunto abrangente de configurações que permitem personalizar seu comportamento. Abaixo está uma descrição das propriedades disponíveis para configuração:
Você pode ajustar as configurações ao inicializar a instância do Shieldon ou usar as APIs setProperty
ou setProperties
posteriormente.
Inicializando
$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);
chave | tipo | valor |
---|---|---|
time_unit_quota | array | ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60] |
time_reset_limit | inteiro | 3600 |
interval_check_referer | inteiro | 5 |
interval_check_session | inteiro | 30 |
limit_unusual_behavior | array | ['cookie' => 5, 'session' => 5, 'referer' => 10] |
cookie_name | string | ssjd |
cookie_domain | string | " |
Essa configuração permite definir os limites de visualizações de página para os usuários do seu site com base em uma unidade de tempo específica. As chaves do array são 's' (segundo), 'm' (minuto), 'h' (hora) e 'd' (dia), cada chave corresponde ao limite de visualizações de página por usuário para essa unidade de tempo. O padrão é ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
chave | valor | descrição |
---|---|---|
s | inteiro | Visualizações de página por visitante por segundo |
m | inteiro | Visualizações de página por visitante por minuto |
h | inteiro | Visualizações de página por visitante por hora |
d | inteiro | Visualizações de página por visitante por dia |
Se você deseja limitar um usuário a ver apenas 100 páginas
por dia, basta definir s
, m
e h
como um número muito alto e definir d
como 100
.
Lembre-se de que quando os usuários atingem o limite, eles são temporariamente bloqueados e podem ser desbloqueados resolvendo um Captcha, portanto, não defina os valores muito frouxos, caso contrário, não faria sentido usar esta biblioteca.
time_reset_limit
Este é o tempo em segundos após o qual o contador de filtros é redefinido. O valor padrão é 3600 (1 hora).
interval_check_referer
Similar a interval_check_referer
, essa propriedade define o atraso em segundos antes de Shieldon começar a verificar o cookie SESSION
de um usuário. O padrão é 30
segundos.
Quando um usuário visita seu site pela primeira vez, digitando a URL no navegador, o HTTP_REFERER
está vazio. Após interval_check_referer
segundos, Shieldon começará a verificar o HTTP_REFERER
.
Você pode ignorar esse valor.
interval_check_session
Quando um usuário visita seu site pela primeira vez, após interval_check_session
segundos, Shieldon começará a verificar o cookie SESSION
.
limit_unusual_behavior
Esta configuração permite definir os limites para serem marcados como comportamento incomum com base em certas condições.
O padrão é ['cookie' => 5, 'session' => 5, 'referer' => 10]
.
Configurando os limites e quotas para serem marcados como comportamento incomum para os visitantes do seu site.
chave | valor | descrição |
---|---|---|
cookie | inteiro | Cookie gerado por JavaScript. |
session | inteiro | Sessão do PHP |
referer | inteiro | HTTP_REFERER |
cookie_name
Esta propriedade é usada para especificar o nome do cookie usado pelo Shieldon. O padrão é ssjd
.
cookie_domain
Esta propriedade define o domínio para o qual o cookie está restrito. Por padrão, o cookie está disponível para todos os subdomínios no servidor.
deny_attempt_enable
Se você habilitar essa opção, o Shieldon registrará todas as falhas consecutivas de CAPTCHA. Quando um usuário atingir o limite especificado, o Shieldon o classificará como um IP bloqueado na tabela de regras, o que persiste até o início do novo ciclo de dados.
Mesmo quando bloqueado, os usuários ainda podem acessar a página de aviso. No entanto, se eles consistentemente falharem em resolver o CAPTCHA, é altamente provável que não sejam humanos. Em resposta, o Shieldon os adiciona à lista de bloqueio do firewall do sistema, efetivamente os banindo permanentemente.
Padrão:
'deny_attempt_enable' => [
'data_circle' => false,
'system_firewall' => false,
],
record_attempt_detection_period
Para evitar adicionar bots de plataformas sociais ao firewall do iptables, como os do Facebook, Line e outros que capturam imagens das suas páginas da web, você deve ajustar os valores abaixo conforme necessário. (Unidade: segundos)
Padrão:
'record_attempt_detection_period' => 5,
reset_attempt_counter
Este parâmetro determina quanto tempo (em segundos) até o contador de tentativas ser redefinido. Neste caso, o contador é redefinido a cada 30 minutos.
Padrão:
'reset_attempt_counter' => 1800,
iptables_watching_folder
Este parâmetro é o diretório monitorado pelo serviço iptables para comandos do Firewall Shieldon. Neste caso, está monitorando o diretório temporário '/tmp/'
.
Para quaisquer propriedades não mencionadas aqui, você pode consultar a função get_default_properties()
na classe Shieldon\Firewall\Helpers
.
/**
* As configurações padrão do núcleo do 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/',
];
}
Observação: Você pode definir essas propriedades durante a inicialização da instância do Shieldon ou posteriormente usando as APIs setProperty
ou setProperties
.