La seguridad de una web es fundamental, especialmente cuando hablamos de proyectos desarrollados con Craft CMS. Uno de los vectores de ataque más comunes son los ataques de fuerza bruta y el abuso de peticiones HTTP, que pueden saturar tu servidor y comprometer el rendimiento de tu sitio. Para mitigar estos riesgos, hemos desarrollado Rate Limit, un plugin nativo para Craft CMS 5 que limita las peticiones por dirección IP.
Qué es el rate limiting y por qué lo necesitas
El rate limiting es una técnica de seguridad que restringe el número de peticiones que un cliente puede realizar en un período de tiempo determinado. Esta medida es esencial para:
• Prevenir ataques de fuerza bruta en formularios de login
• Mitigar ataques DDoS a pequeña escala
• Proteger APIs y endpoints de uso abusivo
• Reducir costes de servidor al evitar peticiones innecesarias
• Mantener la disponibilidad del sitio para usuarios legítimos
Características del plugin Rate Limit
Configuración flexible
El plugin permite definir el número máximo de peticiones permitidas por IP por minuto. El valor por defecto es de 4000 peticiones, pero puedes ajustarlo según las necesidades de tu proyecto. Un blog con poco tráfico puede usar valores más restrictivos (100-500), mientras que una aplicación con mucha interactividad puede requerir límites más altos.
Whitelist de IPs
No todas las IPs deben estar sujetas a limitación. El plugin incluye una lista blanca donde puedes excluir:
• IPs individuales: útil para servicios de monitorización o tu propia oficina
• Rangos CIDR: para excluir subredes completas (ej: 192.168.1.0/24)
Dashboard de monitorización
El panel de control integrado en el CP de Craft muestra estadísticas de las peticiones bloqueadas, permitiéndote identificar patrones de ataque y ajustar la configuración según sea necesario.
Integración nativa con Craft
El plugin utiliza el sistema de cache nativo de Craft CMS, lo que significa que no requiere dependencias externas como Redis o Memcached (aunque los soporta si ya los tienes configurados). La instalación es sencilla y no impacta el rendimiento de tu aplicación.
Cómo funciona
Cuando llega una petición HTTP, el plugin:
1. Obtiene la IP del visitante
2. Comprueba si está en la whitelist
3. Consulta el contador de peticiones en cache
4. Si supera el límite, responde con un error HTTP 429 (Too Many Requests)
5. Registra la petición bloqueada para su análisis
Las ventanas de tiempo se reinician cada minuto, lo que permite a los usuarios legítimos que hayan sido bloqueados temporalmente recuperar el acceso rápidamente.
Instalación
Puedes instalar el plugin directamente desde el Plugin Store de Craft CMS o mediante Composer:
composer require liquidbcn/craftcms-rate-limit
php craft plugin/install rate-limitDespués de la instalación, accede a Configuración > Plugins > Rate Limit para ajustar los parámetros según tus necesidades.
Configuración mediante archivo
Para proyectos con múltiples entornos, puedes crear el archivo config/rate-limit.php:
<?php
return [
'enabled' => true,
'maxRequestsPerIpPerMinute' => 500,
'excludedIps' => [
'127.0.0.1',
'10.0.0.0/8',
],
];
Requisitos
• Craft CMS 5.0 o superior
• PHP 8.2 o superior
Descarga el plugin
Rate Limit está disponible de forma gratuita en el Plugin Store oficial de Craft CMS: