feat(security): Implementar sistema de contraseñas seguro con hashing
- Añadir hashing bcrypt para todas las contraseñas nuevas y existentes - Implementar verificación segura con password_hash() y password_verify() - Migrar 10 contraseñas existentes de texto plano a formato hash - Agregar protección CSRF en formulario de login - Implementar rate limiting (5 intentos/minuto) contra fuerza bruta - Mejorar formulario de edición con campos de contraseña seguros - Agregar validación de coincidencia y longitud mínima de contraseñas - Sanitización de inputs y validación de formato de email - Prevenir exposición de hashes en interfaz de usuario Cambia vulnerabilidad crítica donde las contraseñas se almacenaban y viajaban en texto plano.
This commit is contained in:
@@ -35,7 +35,31 @@
|
||||
$usuario->setCurp($_POST['curp']);
|
||||
$usuario->setRfc($_POST['rfc']);
|
||||
$usuario->setEmail($_POST['email']);
|
||||
$usuario->setPassword($_POST['password']);
|
||||
|
||||
// Solo actualizar contraseña si se proporciona una nueva
|
||||
$newPassword = trim($_POST['password']);
|
||||
$confirmPassword = trim($_POST['password_confirm']);
|
||||
|
||||
if (!empty($newPassword)) {
|
||||
// Validar que las contraseñas coincidan
|
||||
if ($newPassword !== $confirmPassword) {
|
||||
$smarty->assign("error", "Las contraseñas no coinciden");
|
||||
$smarty->assign("info", $_POST);
|
||||
$smarty->display('templates/forms/editar-usuario.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Validar longitud mínima
|
||||
if (strlen($newPassword) < 6) {
|
||||
$smarty->assign("error", "La contraseña debe tener al menos 6 caracteres");
|
||||
$smarty->assign("info", $_POST);
|
||||
$smarty->display('templates/forms/editar-usuario.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
$usuario->setPassword($newPassword);
|
||||
}
|
||||
|
||||
$usuario->setSucursalId($_POST['sucursalId']);
|
||||
|
||||
$usuario->Update();
|
||||
|
||||
Reference in New Issue
Block a user