IMPORTANTE: Las credenciales de Firebase que ves en firebase-config.js están diseñadas para ser públicas. Esto NO es un problema de seguridad.
-
Firebase está diseñado para aplicaciones web del lado del cliente
- Las API keys se incluyen en el código JavaScript que se envía al navegador
- Cualquier usuario puede ver el código fuente de una aplicación web
- Por lo tanto, Firebase está diseñado para funcionar con API keys públicas
-
La seguridad real NO viene de ocultar las API keys
- Las API keys solo identifican tu proyecto de Firebase
- NO otorgan acceso automático a tus datos
- Son como una "dirección" para encontrar tu proyecto
-
La seguridad real viene de:
- ✅ Reglas de Firestore (
firestore.rules) - ✅ Autenticación de usuarios
- ✅ Configuraciones de seguridad en Firebase Console
- ✅ Reglas de Firestore (
El archivo firestore.rules contiene reglas que protegen tus datos:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
// Solo el usuario autenticado puede leer y escribir sus propios datos
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}Esto significa:
- ✅ Solo usuarios autenticados pueden acceder a datos
- ✅ Cada usuario solo puede ver SUS propios datos
- ✅ Nadie puede ver los datos de otro usuario
- ✅ Los tokens de GitHub están protegidos
- Los usuarios deben registrarse con email y contraseña
- Firebase maneja el hash de contraseñas de forma segura
- Solo usuarios autenticados pueden usar el dashboard
En Firebase Console, solo los dominios autorizados pueden usar tu proyecto:
localhost(para desarrollo)fastreds.github.io(para producción)
Esto previene que otros sitios web usen tus credenciales de Firebase.
Firebase tiene documentación extensa sobre este tema:
"Unlike how API keys are typically used, API keys for Firebase services are not used to control access to backend resources; that can only be done with Firebase Security Rules. Usually, you need to fastidiously guard API keys (for example, by using a vault service or setting the keys as environment variables); however, API keys for Firebase services are ok to include in code or checked-in config files."
Traducción:
"A diferencia de cómo se usan típicamente las API keys, las API keys para servicios de Firebase NO se usan para controlar el acceso a recursos del backend; eso solo se puede hacer con las Reglas de Seguridad de Firebase. Usualmente, necesitas guardar celosamente las API keys (por ejemplo, usando un servicio de bóveda o configurándolas como variables de entorno); sin embargo, las API keys para servicios de Firebase están bien para incluirse en el código o en archivos de configuración versionados."
- Credenciales en archivo separado (
firebase-config.js) - Código modular y mantenible
- Comentarios explicativos
- Reglas de Firestore estrictas
- Solo usuarios autenticados tienen acceso
- Cada usuario solo ve sus propios datos
- Contraseñas hasheadas por Firebase
- Validación de email
- Requisitos mínimos de contraseña (6 caracteres)
- Tokens almacenados en Firestore (no en localStorage)
- Protegidos por reglas de Firestore
- Solo el usuario propietario puede acceder
- No funcionará (el código JavaScript es público)
- No es necesario (Firebase está diseñado para esto)
- Puede romper tu aplicación
- Las variables de entorno se compilan en el código final
- Siguen siendo visibles en el navegador
- Es una falsa sensación de seguridad
- Este SÍ es sensible
- Solo guárdalo en el dashboard (se almacena de forma segura)
- Nunca lo incluyas en el código fuente
- Ve a Firebase Console
- Firestore Database → Rules
- Copia el contenido de
firestore.rules - Publica las reglas
- Firebase Console → Authentication → Settings
- Authorized domains
- Solo agrega dominios que controlas
- Revisa Firebase Console regularmente
- Verifica usuarios registrados
- Revisa el uso de Firestore
- Revisa las reglas cuando agregues nuevas funcionalidades
- Prueba las reglas antes de publicarlas
- Documenta los cambios
Los únicos datos que debes proteger son:
-
GitHub Personal Access Token
- ✅ Almacenado de forma segura en Firestore
- ✅ Protegido por reglas de seguridad
- ✅ Solo el usuario propietario puede acceder
-
Contraseñas de Usuarios
- ✅ Hasheadas automáticamente por Firebase
- ✅ Nunca se almacenan en texto plano
- ✅ Firebase maneja todo de forma segura
-
Datos Personales en Firestore
- ✅ Protegidos por reglas de Firestore
- ✅ Solo accesibles por el usuario propietario
- ✅ Requieren autenticación
| Elemento | ¿Es Público? | ¿Necesita Protección? | ¿Cómo se Protege? |
|---|---|---|---|
| Firebase API Key | ✅ Sí | ❌ No | N/A - Diseñado para ser público |
| Firebase Config | ✅ Sí | ❌ No | N/A - Diseñado para ser público |
| Reglas de Firestore | ✅ Sí (el código) | ✅ Sí (la configuración) | Configuradas en Firebase Console |
| Contraseñas | ❌ No | ✅ Sí | Hasheadas por Firebase Auth |
| GitHub Tokens | ❌ No | ✅ Sí | Reglas de Firestore + Autenticación |
| Datos de Usuario | ❌ No | ✅ Sí | Reglas de Firestore + Autenticación |
Tu dashboard está seguro porque:
- ✅ Las reglas de Firestore protegen los datos
- ✅ La autenticación verifica la identidad de usuarios
- ✅ Los dominios autorizados previenen uso no autorizado
- ✅ Los tokens sensibles están protegidos
Las API keys de Firebase son públicas por diseño y esto es completamente normal y seguro.
Si tienes dudas, consulta la documentación oficial de Firebase o el equipo de soporte de Firebase.
Última actualización: 2025-11-23 Más información: https://firebase.google.com/docs/projects/api-keys