Documento activo

Seguridad, Permisos y Sesiones

Controles de acceso, CSRF, sesiones y seguridad.

Volver al indice

Seguridad, Permisos y Sesiones

1. Autenticacion

La autenticacion principal se resuelve entre:

  • login.php
  • helpers/Auth.php
  • models/Model.php

El flujo incluye:

  • validacion CSRF
  • bloqueo por IP
  • bloqueo temporal por intentos fallidos
  • registro de actividad
  • cambio obligatorio de contrasena en primer login

2. Sesion

La sesion:

  • se inicia de forma centralizada
  • tiene nombre propio
  • usa httponly
  • usa SameSite=Lax
  • ajusta secure segun HTTPS
  • expira por inactividad

3. Roles y niveles

El sistema distingue entre rol_id y nivel_acceso.

Uso habitual

  • rol_id: define el perfil especifico
  • nivel_acceso: permite validar jerarquia minima

Esto se usa en funciones como:

  • Auth::requerirLogin()
  • Auth::requerirRol()
  • Auth::tienePermisoModulo()

4. CSRF

La proteccion CSRF esta incluida en helpers/Auth.php dentro de la clase CSRF.

Funciones principales:

  • generar token
  • insertar campo oculto
  • validar token
  • rotar token tras validacion exitosa

5. Sanitizacion

La clase Sanitizar provee filtros basicos para:

  • texto
  • enteros
  • decimales
  • email

6. Headers de seguridad

Desde config/config.php se aplican:

  • X-Frame-Options: SAMEORIGIN
  • X-Content-Type-Options: nosniff
  • Referrer-Policy: strict-origin-when-cross-origin
  • Content-Security-Policy
  • politicas anti cache para paginas sensibles

7. Subida y acceso a archivos

El sistema maneja uploads en assets/uploads/ y usa funciones para:

  • normalizar URLs
  • convertir rutas publicas a locales
  • stream seguro de recursos

La seguridad real depende de:

  • validar extensiones permitidas
  • permisos de carpeta
  • no exponer escritura a rutas innecesarias

8. Bloqueo de IP y anti abuso

La logica de IP bloqueada esta en:

  • helpers/IpBlockService.php

Controla:

  • intentos fallidos
  • bloqueos temporales
  • bloqueos administrativos

9. Permisos por modulo

No basta con el rol. El sistema tambien puede activar permisos finos por modulo mediante la tabla permisos_modulo.

Esto impacta:

  • menues laterales
  • vistas disponibles
  • accesos operativos

10. Consideraciones para produccion

  • Activar HTTPS obligatorio
  • Revisar y endurecer CSP segun dominios realmente usados
  • Proteger claves de pasarela
  • Proteger endpoints publicos y webhooks
  • Auditar accesos a carpeta de uploads
  • Revisar exposicion de errores

11. Riesgos residuales

Aunque hay varias capas de seguridad, se recomienda auditar periodicamente:

  • modulos publicos
  • subida de archivos
  • webhooks y pagos
  • permisos por rol
  • endpoints AJAX