REFERENCIA
/
TÉCNICA
Documentación Técnica
Auditoría OWASP, arquitectura de lectura pública y mitigación de problemas en hosting LiteSpeed.
§ 01
Ciberseguridad (OWASP Audit)
Mecanismos implementados para fortificar la plataforma frente a ataques web.
| Vulnerabilidad Mitigada | Solución Implementada |
|---|---|
| Fuerza Bruta / DoS | Tabla login_attempts que bloquea la dirección IP durante 15 minutos tras 5 intentos fallidos de autenticación. |
| Inyección SQL (SQLi) | Refactorización global a sentencias preparadas de PDO (`Prepared Statements`). Prohibición absoluta de concatenación de variables en el backend. |
| Race Conditions (Invitaciones) | El canje de un código de invitación utiliza una operación de UPDATE atómica en MySQL (ej. UPDATE invitaciones SET usado=1 WHERE codigo=? AND usado=0), validando las filas afectadas. |
| Cross-Site Scripting (XSS) | Sanitización en la entrada de datos. Todas las cadenas se pasan por htmlspecialchars(..., ENT_QUOTES) al guardar en la base de datos. |
| Insecure Direct Object Reference (IDOR) | Restricción dura a nivel de BD. Las ediciones y eliminaciones filtran forzosamente por usuario_id extraído del JWT/Sesión. |
§ 02
Backend / API REST
GET
Lectura Pública (get_evaluaciones.php)
Este endpoint fue extraído intencionalmente del bloque de protección de sesión (`isset($_SESSION['user_id'])`), permitiendo que la capa de presentación consuma datos sin autenticarse.
Public
POST
Caché Busters
En entornos LiteSpeed, las llamadas AJAX para obtener los calendarios públicos se transformaron de GET a POST para forzar al Proxy/Caché a procesar la solicitud en tiempo real desde PHP.
Network
§ 03
Frontend y Fallbacks
| Componente | Responsabilidad |
|---|---|
script.js |
Motor lógico del DOM. Se eliminó la característica de `localStorage_fallback` que provocaba "alucinaciones" (evaluaciones fantasma) durante respuestas HTTP 500 del servidor. El frontend ahora actúa como un cliente tonto confiando plenamente en la DB. |
pdf_generator.js |
Responsable de clonar el contenido del DOM visible y compilarlo en un buffer base64 para descargar PDFs locales. |