El Firewall de Shieldon tiene un amplio conjunto de configuraciones que te permiten personalizar su comportamiento. A continuación se muestra una descripción de las propiedades disponibles para configurar:
Puedes ajustar la configuración al inicializar una instancia de Shieldon, o utilizando más adelante las API setProperty
o setProperties
.
Inicialización
$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);
clave | tipo | valor |
---|---|---|
time_unit_quota | array | ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60] |
time_reset_limit | entero | 3600 |
interval_check_referer | entero | 5 |
interval_check_session | entero | 30 |
limit_unusual_behavior | array | ['cookie' => 5, 'session' => 5, 'referer' => 10] |
cookie_name | cadena | ssjd |
cookie_domain | cadena | " |
Esta configuración te permite definir los límites de visitas a páginas para los usuarios de tu sitio web en función de una unidad de tiempo determinada. Las claves del array son 's' (segundo), 'm' (minuto), 'h' (hora) y 'd' (día), y cada clave corresponde al límite de visitas a páginas por usuario para esa unidad de tiempo. El valor predeterminado es ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
clave | valor | descripción |
---|---|---|
s | entero | Visitas a páginas por visitante por segundo |
m | entero | Visitas a páginas por visitante por minuto |
h | entero | Visitas a páginas por visitante por hora |
d | entero | Visitas a páginas por visitante por día |
Si solo deseas limitar a un usuario a ver 100 páginas
al día, simplemente establece s
, m
, h
en un número muy alto y establece d
en 100
.
Ten en cuenta que cuando los usuarios alcanzan el límite, se les bloquea temporalmente y pueden ser desbloqueados resolviendo un Captcha, así que no establezcas los valores muy altos, de lo contrario no tendría sentido utilizar esta librería.
time_reset_limit
Es el tiempo en segundos después del cual se reinicia el contador de filtros. El valor predeterminado es 3600 (1 hora).
interval_check_referer
Al igual que interval_check_referer
, esta propiedad establece el retraso en segundos antes de que Shieldon comience a comprobar la cookie SESSION
de un usuario. El valor predeterminado es 30
segundos.
Cuando un usuario visita tu sitio web por primera vez ingresando la URL en el navegador, el HTTP_REFERER
está vacío. Después de interval_check_referer
segundos, Shieldon comenzará a comprobar el HTTP_REFERER
.
Puedes ignorar este valor.
interval_check_session
Cuando un usuario visita tu sitio web por primera vez, después de interval_check_session
segundos, Shieldon comenzará a comprobar la cookie SESSION
.
limit_unusual_behavior
Esta configuración te permite definir los límites para ser marcado como un comportamiento inusual basado en ciertas condiciones.
El valor predeterminado es ['cookie' => 5, 'session' => 5, 'referer' => 10]
.
Establece los límites y cuotas para ser marcado como un comportamiento inusual para los visitantes de tu sitio web.
clave | valor | descripción |
---|---|---|
cookie | entero | Cookie generada por JavaScript. |
session | entero | Sesión de PHP |
referer | entero | HTTP_REFERER |
cookie_name
Esta propiedad se utiliza para especificar el nombre de la cookie que utiliza Shieldon. El valor predeterminado es ssjd
.
cookie_domain
Esta propiedad define el dominio al que se restringe la cookie. De forma predeterminada, la cookie está disponible para todos los subdominios del servidor.
deny_attempt_enable
Si habilitas esta opción, Shieldon registrará cada fallo consecutivo de CAPTCHA. Una vez que un usuario alcance el límite especificado, Shieldon lo clasificará como una IP bloqueada en la tabla de reglas, lo cual persiste hasta que comienza el nuevo ciclo de datos.
Incluso cuando está bloqueado, los usuarios aún pueden acceder a la página de advertencia. Sin embargo, si consistentemente no pueden resolver el CAPTCHA, es muy probable que no sean humanos. En respuesta, Shieldon los agrega a la lista negra del firewall del sistema, lo que los prohíbe permanentemente.
Por defecto:
'deny_attempt_enable' => [
'data_circle' => false,
'system_firewall' => false,
],
record_attempt_detection_period
Para evitar agregar bots de plataformas sociales al firewall de iptables, como los de Facebook, Line y otros que obtienen capturas de pantalla de tus páginas web, debes ajustar los valores a continuación según tus necesidades. (Unidad: segundos)
Por defecto:
'record_attempt_detection_period' => 5,
reset_attempt_counter
Este parámetro determina cada cuánto tiempo (en segundos) se reinicia el contador de intentos. En este caso, el contador se reinicia cada 30 minutos.
Por defecto:
'reset_attempt_counter' => 1800,
iptables_watching_folder
Este parámetro es el directorio que el servicio iptables supervisa en busca de comandos del Firewall de Shieldon. En este caso, está supervisando el directorio temporal '/tmp/'
.
Para cualquier propiedad que no se mencione aquí, puedes consultar la función get_default_properties()
de la clase Shieldon\Firewall\Helpers
.
/**
* Las configuraciones predeterminadas del núcleo de 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/',
];
}
Nota: Puedes establecer estas propiedades durante la inicialización de la instancia de Shieldon o más tarde utilizando las API setProperty
o setProperties
.