Reglas de Seguridad en Firebase Storage para Blogs
Clase 24 de 32 • Curso de Firebase 5 para Web
Contenido del curso
Consola Web de Administración
Autenticación de Usuarios
- 6

Servicios de autenticación de Firebase
06:30 min - 7

Crear usuarios con Firebase Authentication
13:12 min - 8

Autenticación de Usuarios con Firebase: Registro y Verificación de Email
15:02 min - 9

Autenticación con Google usando Firebase en aplicaciones web
06:22 min - 10

Login con Facebook en Firebase
09:47 min - 11

Gestión de Autenticación de Usuarios con Firebase
11:42 min - 12

Gestión de usuarios en consola Firebase
05:05 min - 13

Importar y exportar usuarios de Firebase
04:17 min
Gestión de la Base de Datos
- 14

Firestore vs Realtime Database: por qué migrar
08:36 min - 15
Comparación entre Realtime Database y Firestore de Firebase
02:11 min - 16

Habilitar Firestore en Firebase Console
09:53 min - 17

Cómo insertar datos en Firestore con validación
10:53 min - 18

Consultas en Tiempo Real con Firestore para Aplicaciones Web
15:01 min - 19

Operaciones avanzadas de Firestore
13:12 min - 20

Reglas de seguridad básicas en Firestore
08:07 min - 21

Creación y gestión de índices en Firestore para optimizar consultas
07:13 min
Almacenamiento de archivos
Hosting
Notificaciones Push
Conclusiones
Asegura tu flujo de imágenes en Firebase con reglas claras y efectivas. Aquí verás cómo abrir lectura pública por ruta específica y restringir la escritura a usuarios autenticados, validando tamaño del archivo y tipo de contenido. El resultado: imágenes visibles para todos y subidas controladas solo por su dueño, con archivos válidos y ligeros.
¿Qué problema resuelven las reglas de Firebase Storage?
Las reglas por defecto de Firebase permiten escribir solo si estás autenticado, pero no contemplan rutas específicas ni validaciones finas. Para un blog con imágenes en storage, se ajustan estas reglas para que:
- Cualquier usuario pueda leer imágenes públicas sin autenticarse.
- Solo el propietario pueda subir archivos a su directorio.
- Se valide el tamaño: menor a 5 MB.
- Se verifique el tipo de archivo: solo imágenes.
¿Qué conceptos clave se aplican?
- Autenticación, autorización y validación de datos: seguridad integral en storage.
- Patrón de rutas con match: define reglas por directorios y subdirectorios.
- Variables de ruta como {userID} y {IMG ID}: capturan valores dinámicos.
- Identidad del usuario con request.auth.uid: asegura escritura solo en su carpeta.
- Tipos MIME con content type y matches: restringen a image/.*.
¿Qué estructura de carpetas se usa?
- Directorio raíz de imágenes: “IMGs post/”.
- Subcarpeta por usuario: “IMGs post/{userID}/”.
- Archivo dentro: “IMGs post/{userID}/{IMG ID}”.
¿Cómo configurar lectura pública y escritura segura?
Se parte del tab de reglas en la consola. Se ajusta el match global a rutas concretas y se añaden condiciones para validar archivo, usuario y tipo de contenido.
¿Cómo abrir lectura pública por ruta específica?
- Aplicar un match a “IMGs post/**” para permitir read sin autenticación.
- Mantener write con restricciones en una regla más específica.
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
// Lectura pública de todas las imágenes bajo "IMGs post/"
match /IMGs post/{allPaths=**} {
allow read: if true;
}
// Escritura segura por usuario y archivo específico
match /IMGs post/{userID}/{imgID} {
allow read: if true;
allow write: if request.auth != null
&& request.auth.uid == userID
&& request.resource.size < 5 * 1024 * 1024
&& resource.contentType.matches('image/.*');
}
}
}
¿Cómo limitar el tamaño a 5 MB?
- Usar una condición que compare el tamaño del archivo subido con 5 × 1024 × 1024.
- Beneficio: evita archivos pesados que afecten rendimiento y costos.
Puntos clave: - Solo se aceptan archivos < 5 MB. - La validación ocurre en el servidor de Firebase.
¿Cómo validar tipo de archivo e identidad del usuario?
- Tipo de contenido: usar resource.contentType.matches('image/.*').
- Identidad: exigir request.auth != null y request.auth.uid == userID.
Esto garantiza que: - Solo imágenes válidas se suban. - Cada usuario escribe en “su” directorio y no en el de otros.
¿Qué errores comunes y reto final se proponen?
Al probar la subida, puede fallar si no hay sesión iniciada: “no puede leer la propiedad UID en el post controller”. La causa es clara: no hay autenticación, por lo que no existe UID en el cliente.
¿Cómo resolver el error de autenticación?
- Iniciar sesión, por ejemplo con Google.
- Opcional: validar antes de abrir la ventana de post para evitar intentos de subida sin sesión.
Efecto al autenticarse: - La subida cumple reglas: usuario autenticado, carpeta propia, imagen válida y menos de 5 MB. - El post se crea con imagen y link del video visibles.
¿Qué reto práctico queda pendiente?
- Habilitar en el formulario de comentarios la subida de un archivo máximo de 1 MB.
- Permitir la subida solo si el usuario está autenticado.
Sugerencias de implementación: - Reutilizar el patrón de match con carpeta específica para comentarios. - Replicar validación de tamaño y autenticación.
¿Tienes dudas o quieres compartir cómo estructuraste tus reglas? Deja tu comentario y cuéntanos qué validaciones añadiste. Próximamente: hosting de Firebase.