Fortaleciendo la integridad: Resolviendo hallazgos críticos en TuTiendaWeb
El Desafío
En el proyecto TuTiendaWeb, tras concluir las fases iniciales de testing, detectamos una serie de vulnerabilidades y problemas de consistencia que afectaban la integridad de los datos y la experiencia de usuario. Estos hallazgos, clasificados con severidad Alta y Media, requerían una intervención directa en nuestras reglas de validación y flujos de datos para asegurar un entorno robusto antes de avanzar a etapas de mayor complejidad.
El Enfoque
Nuestra estrategia se centró en unificar las reglas de negocio entre el frontend y el backend, además de implementar salvaguardas para prevenir envíos duplicados.
Estandarización de Esquemas con Zod
Detectamos una "divergencia silenciosa" donde las validaciones de cliente no coincidían con las del servidor, especialmente en campos como password y displayName. Centralizamos estas reglas usando Zod para garantizar que la fuente de la verdad fuera única:
import { z } from 'zod';
export const userRegistrationSchema = z.object({
password: z.string().min(8).regex(/[A-Z]/, 'Debe incluir una mayúscula').regex(/[0-9]/, 'Debe incluir un número'),
displayName: z.string().min(3).max(50)
});
Prevención de Doble Envío
Para evitar el envío múltiple de formularios, implementamos un mecanismo de bloqueo en la interfaz mediante el estado de carga y restricciones a nivel de servidor:
<button
disabled={isPending}
onClick={handleSubmit}>
{isPending ? 'Procesando...' : 'Guardar'}
</button>
Refuerzo en Seguridad de Firestore
Corregimos la brecha de seguridad donde el storeId no estaba correctamente vinculado al path, asegurando que los usuarios solo operen sobre sus propios datos mediante reglas específicas en Firestore:
allow update: if request.resource.data.storeId == resource.data.storeId;
Resultados Obtenidos
| Hallazgo | Impacto | Resolución |
|---|---|---|
| Validación de Credenciales | Alta | Esquema único Zod |
| Doble-submit | Alta | Guardias de UI/Server |
Validación noValidate |
Media | Mejora en mensajes Zod |
| Seguridad de Path | Media | Reglas Firestore |
Además, resolvimos un problema de compatibilidad con Node 24.x al actualizar Playwright a una versión que gestiona correctamente las condiciones de resolución, permitiendo que nuestra suite de pruebas E2E se ejecute sin interrupciones.
Lección Clave
La integridad de los datos depende de que el contrato entre el cliente y el servidor sea idéntico. Centralizar las reglas de validación en una biblioteca como Zod no es solo una buena práctica, es la mejor defensa contra comportamientos inconsistentes y brechas de seguridad. Asegúrate de que tu capa de validación se comparta entre ambos entornos antes de finalizar cualquier funcionalidad crítica.
Generated with Gitvlg.com