Home Projects Portfolio Dashboard Export PDF Log in

Fortaleciendo la Seguridad: Auditoría de Reglas de Firestore y Storage

Introducción

En el proyecto MaxiAramayo/TuTiendaWeb-public, recientemente concluimos la "Fase 3" de nuestro roadmap de testing. El objetivo fue claro: elevar el estándar de seguridad de nuestra capa de datos mediante una auditoría rigurosa y exhaustiva de las reglas de seguridad de Firebase Firestore y Storage. No solo se trató de detectar vulnerabilidades, sino de asegurar un comportamiento determinista y escalable mediante pruebas unitarias automatizadas.

El Desafío: Validación Estricta

Históricamente, los sistemas de backend pueden enfrentar problemas de integridad cuando las reglas de acceso son demasiado permisivas. Durante la auditoría, identificamos puntos críticos, como la necesidad de acotar los datos en las operaciones de escritura pública. Por ejemplo, en el caso de la creación de ventas, era necesario validar el tamaño de los campos y la tipado de los identificadores para evitar inyecciones inesperadas.

Implementación de Seguridad con rules-unit-testing

Adoptamos un enfoque de "espejo": por cada regla de allow, implementamos su contraparte de deny. Esto garantiza que no existan comportamientos ambiguos.

// Ejemplo ilustrativo de validación en reglas de Firestore
function isValidIncomingData(data: any) {
  return (
    data.items.length <= 100 &&
    data.customerName.length <= 200 &&
    typeof data.storeId === 'string'
  );
}

Nuestra suite de pruebas, desarrollada con Vitest, ahora cubre la matriz completa de acceso para stores, products y users, asegurando que el aislamiento de datos entre tiendas sea absoluto y verificado en cada CI/CD.

Auditoría y Resultados

Gracias a la automatización en GitHub Actions, corremos nuestras pruebas de integración y seguridad de forma determinista. Hallazgos como el SEC-01 fueron corregidos implementando validaciones estrictas en el esquema, mientras que otros hallazgos de menor severidad quedaron debidamente documentados para su seguimiento.

Conclusión y Próximos Pasos

La seguridad no es una característica final, sino un proceso continuo. La principal lección de esta fase es que el testing de reglas de seguridad, al igual que el código de la aplicación, debe ser determinista.

Conclusiones clave:

  1. Aislamiento total: Utiliza clearFirestore y clearStorage antes de cada suite de pruebas para evitar estados residuales.
  2. Validación en el origen: No confíes únicamente en el SDK de administración; tus reglas de seguridad deben ser la última línea de defensa.
  3. Costo de complejidad: Mantener reglas complejas es costoso; prefiere esquemas de validación claros y concisos.

Generated with Gitvlg.com

Fortaleciendo la Seguridad: Auditoría de Reglas de Firestore y Storage
MAXIMILIANO EXEQUIEL ARAMAYO LAZO

MAXIMILIANO EXEQUIEL ARAMAYO LAZO

Author

Share: