Arquitectura de Seguridad y Guard¶
El CRM implementa un modelo de seguridad tipo "Front-Controller Gatekeeper" distribuido a través de todos los módulos. Ningún archivo PHP directo de la aplicación puede ejecutarse saltándose estas comprobaciones de integridad.
El Patrón _guard.php¶
Cada módulo de acciones (modules/*/actions/*.php) está protegido por un archivo base _guard.php localizado en su respectivo directorio actions/.
Este archivo se invoca en las primeras líneas de cualquier acción y se encarga de:
1. Verificar el Método HTTP: Solo se permite tráfico POST. Las peticiones GET a scripts de acción son rechazadas automáticamente con código 405 Method Not Allowed.
2. Autenticación y Sesión: Comprueba si existe un token de sesión válido y si el usuario está activo.
3. Control de Origen (CSRF): Ejecuta la función app_verify_same_origin_request() para asegurar que la llamada proviene del dominio oficial y no es un ataque Cross-Site Request Forgery.
Ejemplo de uso (Acción típica)¶
<?php
// module/clientes/actions/crear_cliente.php
require_once __DIR__ . '/_guard.php';
$modulo_clientes_action_bootstrap();
// La ejecución solo llega hasta aquí si todas las reglas de seguridad han pasado
$nombre = $_POST['nombre'] ?? '';
// ... lógica de negocio ...
Por qué este enfoque¶
- Universalidad: Al parchear masivamente todos los scripts existentes, cerramos cualquier posible brecha legacy.
- Transparencia: Los programadores de nuevos módulos no necesitan escribir complejas comprobaciones de sesión, basta con hacer un
requiredel guardián. - Auditoría: Todas las peticiones denegadas son registradas en los logs centrales del servidor.