v1.8.0
Security
- HTTP Security Headers —
X-Frame-Options: DENY,X-Content-Type-Options: nosniff,Referrer-Policy,X-XSS-Protection,Permissions-PolicyyContent-Security-Policyenpublic/.htaccessviamod_headers; HSTS comentado listo para HTTPS - Eliminación de dependencias externas — jQuery y Google Fonts cargaban desde CDN externo sin SRI en las vistas de auth; reemplazados por assets self-hosted — elimina vector de supply-chain y fuga de token de reset via cabecera
Referer - Cookie de sesión segura — helper
session_start_secure()centralizado enautoload.phpaplicahttponly,samesite=Strictysecurecondicional en todos los puntos donde se inicia sesión - Logout cambiado de GET a POST con CSRF — ruta
/logoutahora solo acepta POST con token CSRF verificado; elimina logout CSRF via<img>o link - Eliminación de user enumeration en forgot-password — respuesta genérica siempre, independientemente de si el email existe
- Rotación de token CSRF — token invalidado tras cada verificación exitosa, forzando regeneración en el siguiente request
- Protección contra auto-eliminación y auto-degradación de admin — guards en
UserController::delete()yedit() - Error de conexión DB no expone detalles internos —
error_log()+ vista de error 500 en lugar del mensaje crudo de MySQLi
Added
- Páginas de error personalizadas — vistas standalone en
views/errors/:404.php,403.php,500.phpcon el gradiente y paleta del proyecto; sin dependencia de la app ni de la DB AuthMiddleware::admin()devuelve HTTP 403 con página de error en lugar de redirigir al homeRouter::dispatch()renderiza la vista 404 en lugar de imprimir el path interno
Fixed
- Alineación del botón Logout en la navbar — clase CSS
.btn-logout-naven lugar de inline styles storage/.htaccessconRequire all deniedpara proteger archivos de caché
Full Changelog
https://github.com/Jandres25/Encriptacion_PHP/blob/master/CHANGELOG.md