La seguretat d'un web és fonamental, especialment quan parlem de projectes desenvolupats amb Craft CMS. Un dels vectors d'atac més comuns són els atacs de força bruta i l'abús de peticions HTTP, que poden saturar el teu servidor i comprometre el rendiment del teu lloc. Per mitigar aquests riscos, hem desenvolupat Rate Limit, un plugin natiu per a Craft CMS 5 que limita les peticions per adreça IP.
Què és el rate limiting i per què el necessites
El rate limiting és una tècnica de seguretat que restringeix el nombre de peticions que un client pot realitzar en un període de temps determinat. Aquesta mesura és essencial per:
• Prevenir atacs de força bruta en formularis de login
• Mitigar atacs DDoS a petita escala
• Protegir APIs i endpoints d'ús abusiu
• Reduir costos de servidor en evitar peticions innecessàries
• Mantenir la disponibilitat del lloc per a usuaris legítims
Característiques del plugin Rate Limit
Configuració flexible
El plugin permet definir el nombre màxim de peticions permeses per IP per minut. El valor per defecte és de 4000 peticions, però pots ajustar-lo segons les necessitats del teu projecte. Un blog amb poc trànsit pot utilitzar valors més restrictius (100-500), mentre que una aplicació amb molta interactivitat pot requerir límits més alts.
Whitelist d'IPs
No totes les IPs han d'estar subjectes a limitació. El plugin inclou una llista blanca on pots excloure:
• IPs individuals: útil per a serveis de monitorització o la teva pròpia oficina
• Rangs CIDR: per excloure subxarxes completes (ex: 192.168.1.0/24)
Dashboard de monitorització
El panell de control integrat al CP de Craft mostra estadístiques de les peticions bloquejades, permetent-te identificar patrons d'atac i ajustar la configuració segons sigui necessari.
Integració nativa amb Craft
El plugin utilitza el sistema de cache natiu de Craft CMS, cosa que significa que no requereix dependències externes com Redis o Memcached (tot i que els suporta si ja els tens configurats). La instal·lació és senzilla i no impacta el rendiment de la teva aplicació.
Com funciona
Quan arriba una petició HTTP, el plugin:
1. Obté la IP del visitant
2. Comprova si està a la whitelist
3. Consulta el comptador de peticions a la cache
4. Si supera el límit, respon amb un error HTTP 429 (Too Many Requests)
5. Registra la petició bloquejada per a la seva anàlisi
Les finestres de temps es reinicien cada minut, cosa que permet als usuaris legítims que hagin estat bloquejats temporalment recuperar l'accés ràpidament.
Instal·lació
Pots instal·lar el plugin directament des del Plugin Store de Craft CMS o mitjançant Composer:
composer require liquidbcn/craftcms-rate-limit
php craft plugin/install rate-limitDesprés de la instal·lació, accedeix a Configuració > Plugins > Rate Limit per ajustar els paràmetres segons les teves necessitats.
Configuració mitjançant fitxer
Per a projectes amb múltiples entorns, pots crear el fitxer config/rate-limit.php:
<?php
return [
'enabled' => true,
'maxRequestsPerIpPerMinute' => 500,
'excludedIps' => [
'127.0.0.1',
'10.0.0.0/8',
],
];
Requisits
• Craft CMS 5.0 o superior
• PHP 8.2 o superior
Descarrega el plugin
Rate Limit està disponible de forma gratuïta al Plugin Store oficial de Craft CMS: