AAEG v1.2 – Río Magdalena
Propuesta de mejoras (basadas en el core actual)
Autor: Benjamín Sánchez Cárdenas
Fecha: Octubre 2025
──────────────────────────────────────────────
- Registro de Endpoints
──────────────────────────────────────────────
-
Validar que $handler sea callable
Motivo: Actualmente se registra sin verificación. Si no es invocable, el error ocurre en tiempo de ejecución.
-
Extraer validación de nombre como método privado
Motivo: La expresión regular se repite. Encapsularla mejora claridad y reutilización.
──────────────────────────────────────────────
2. Despacho y Flujo
──────────────────────────────────────────────
-
Separar process_request() en métodos internos
Motivo: El método actual mezcla validación, autorización, ejecución y logging. Modularizarlo mejora testabilidad.
Propuesta: Dividir en:
- validate_nonce($endpoint)
- authorize_user($endpoint, $capability)
- sanitize_input($input, $schema)
- execute_handler($handler, $input)
-
Cachear IP en propiedad estática
Motivo: get_client_ip() se invoca múltiples veces por solicitud. Guardar el resultado evita redundancia.
──────────────────────────────────────────────
3. Validación y Sanitización
──────────────────────────────────────────────
-
Validar tipos desconocidos en schema
Motivo: Si se registra un tipo no soportado, se ignora silenciosamente. Esto puede causar errores de lógica.
-
Soporte para campos opcionales
Motivo: Actualmente todos los campos del esquema son obligatorios. Permitir key? o optional_keys ampliaría flexibilidad.
──────────────────────────────────────────────
4. Seguridad
──────────────────────────────────────────────
-
Verificar existencia de $_POST['endpoint'] antes de sanitizar
Motivo: Evita errores en entornos con strict_types o configuraciones estrictas de PHP.
-
Añadir helper para generar nonce esperado
Motivo: Facilita integración desde el frontend sin duplicar lógica de nombre.
──────────────────────────────────────────────
5. Logging
──────────────────────────────────────────────
-
Fallback si AAEG_ACCESS_LOG o AAEG_ERROR_LOG no están definidos
Motivo: Actualmente el log simplemente no ocurre. Un fallback a error_log() estándar permitiría trazabilidad mínima.
-
Soporte opcional para persistencia en base de datos
Motivo: Permitiría auditoría estructurada y consultas desde el admin.
──────────────────────────────────────────────
6. Compatibilidad y Entrada
──────────────────────────────────────────────
-
Soporte para application/json como entrada
Motivo: Actualmente solo se procesa $_POST. Leer php://input permitiría integración con clientes modernos.
-
Permitir $_GET en modo test
Motivo: Facilita pruebas sin JavaScript ni formularios.
──────────────────────────────────────────────
7. Rate Limiting
──────────────────────────────────────────────
- Permitir configuración dinámica por endpoint
Motivo: Actualmente el rate limiting es global. Poder definirlo por endpoint permitiría control más granular.
──────────────────────────────────────────────
8. Extensibilidad
──────────────────────────────────────────────
- Soporte para múltiples handlers por endpoint
Motivo: Permitir middleware o callbacks encadenados para validación extendida, logging o transformación.
AAEG v1.2 – Río Magdalena
Propuesta de mejoras (basadas en el core actual)
Autor: Benjamín Sánchez Cárdenas
Fecha: Octubre 2025
──────────────────────────────────────────────
──────────────────────────────────────────────
Validar que $handler sea callable
Motivo: Actualmente se registra sin verificación. Si no es invocable, el error ocurre en tiempo de ejecución.
Extraer validación de nombre como método privado
Motivo: La expresión regular se repite. Encapsularla mejora claridad y reutilización.
──────────────────────────────────────────────
2. Despacho y Flujo
──────────────────────────────────────────────
Separar process_request() en métodos internos
Motivo: El método actual mezcla validación, autorización, ejecución y logging. Modularizarlo mejora testabilidad.
Propuesta: Dividir en:
Cachear IP en propiedad estática
Motivo: get_client_ip() se invoca múltiples veces por solicitud. Guardar el resultado evita redundancia.
──────────────────────────────────────────────
3. Validación y Sanitización
──────────────────────────────────────────────
Validar tipos desconocidos en schema
Motivo: Si se registra un tipo no soportado, se ignora silenciosamente. Esto puede causar errores de lógica.
Soporte para campos opcionales
Motivo: Actualmente todos los campos del esquema son obligatorios. Permitir key? o optional_keys ampliaría flexibilidad.
──────────────────────────────────────────────
4. Seguridad
──────────────────────────────────────────────
Verificar existencia de $_POST['endpoint'] antes de sanitizar
Motivo: Evita errores en entornos con strict_types o configuraciones estrictas de PHP.
Añadir helper para generar nonce esperado
Motivo: Facilita integración desde el frontend sin duplicar lógica de nombre.
──────────────────────────────────────────────
5. Logging
──────────────────────────────────────────────
Fallback si AAEG_ACCESS_LOG o AAEG_ERROR_LOG no están definidos
Motivo: Actualmente el log simplemente no ocurre. Un fallback a error_log() estándar permitiría trazabilidad mínima.
Soporte opcional para persistencia en base de datos
Motivo: Permitiría auditoría estructurada y consultas desde el admin.
──────────────────────────────────────────────
6. Compatibilidad y Entrada
──────────────────────────────────────────────
Soporte para application/json como entrada
Motivo: Actualmente solo se procesa $_POST. Leer php://input permitiría integración con clientes modernos.
Permitir $_GET en modo test
Motivo: Facilita pruebas sin JavaScript ni formularios.
──────────────────────────────────────────────
7. Rate Limiting
──────────────────────────────────────────────
Motivo: Actualmente el rate limiting es global. Poder definirlo por endpoint permitiría control más granular.
──────────────────────────────────────────────
8. Extensibilidad
──────────────────────────────────────────────
Motivo: Permitir middleware o callbacks encadenados para validación extendida, logging o transformación.