Skip to content

Mejoras #2

@bdsyndicate-9791

Description

@bdsyndicate-9791

AAEG v1.2 – Río Magdalena
Propuesta de mejoras (basadas en el core actual)
Autor: Benjamín Sánchez Cárdenas
Fecha: Octubre 2025

──────────────────────────────────────────────

  1. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions