Skip to content

v1.6.1

Choose a tag to compare

@jandrescodes jandrescodes released this 07 Jun 16:26

Security

  • CSRF protection — nueva clase App\Core\Csrf con métodos estáticos token() / verify(); todos los formularios POST incluyen un campo oculto _csrf validado en cada controlador via Controller::verifyCsrf(); token comparado con hash_equals() para prevenir timing attacks
  • XSS en mensajes flash$icon y $message en views/layouts/messages.php ahora usan json_encode() en lugar de interpolación directa en el string JavaScript
  • Delete de usuario cambiado de GET a POST — elimina explotación CSRF vía <img> o link prefetch; users-delete.js crea y envía un form dinámicamente con el token CSRF al confirmar
  • Session fixation en loginsession_regenerate_id(true) se llama inmediatamente después de password_verify() exitoso
  • Tokens de reset de contraseña hasheados en DBAuth::createPasswordResetToken() almacena hash('sha256', $token) en password_resets; el token raw solo viaja en la URL del email

Fixed

  • Null dereference en User::update() — retorna false temprano si getById($id) es null, evitando fatal TypeError en PHP 8.x
  • User::update() éxito falso — cambiado de affected_rows >= 0 a affected_rows !== -1 para distinguir error de DB de actualización idempotente
  • FileCache::remember() no cacheaba null — ahora verifica is_file() antes de llamar get() para distinguir un miss real de un valor null cacheado
  • $favicon sin escapar en headerviews/layouts/header.php ahora pasa $favicon por htmlspecialchars()

Full Changelog

https://github.com/Jandres25/Encriptacion_PHP/blob/master/CHANGELOG.md