Skip to content

Security: fastreds/fastreds.github.io

Security

SECURITY.md

🔒 Seguridad del Dashboard - Información Importante

⚠️ Sobre las Credenciales de Firebase

Las API Keys de Firebase SON Públicas

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.

¿Por qué?

  1. 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
  2. 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
  3. La seguridad real viene de:

    • Reglas de Firestore (firestore.rules)
    • Autenticación de usuarios
    • Configuraciones de seguridad en Firebase Console

🛡️ Cómo Está Protegido Tu Dashboard

1. 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

2. Autenticación

  • 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

3. Dominios Autorizados

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.

📚 Documentación Oficial

Firebase tiene documentación extensa sobre este tema:

Cita de la Documentación de Firebase:

"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."

✅ Mejores Prácticas Implementadas

1. Organización del Código ✅

  • Credenciales en archivo separado (firebase-config.js)
  • Código modular y mantenible
  • Comentarios explicativos

2. Reglas de Seguridad ✅

  • Reglas de Firestore estrictas
  • Solo usuarios autenticados tienen acceso
  • Cada usuario solo ve sus propios datos

3. Autenticación Robusta ✅

  • Contraseñas hasheadas por Firebase
  • Validación de email
  • Requisitos mínimos de contraseña (6 caracteres)

4. Protección de Tokens de GitHub ✅

  • Tokens almacenados en Firestore (no en localStorage)
  • Protegidos por reglas de Firestore
  • Solo el usuario propietario puede acceder

🚫 Lo que NO Debes Hacer

❌ NO intentes ocultar las API keys de Firebase

  • No funcionará (el código JavaScript es público)
  • No es necesario (Firebase está diseñado para esto)
  • Puede romper tu aplicación

❌ NO uses variables de entorno para Firebase en el frontend

  • Las variables de entorno se compilan en el código final
  • Siguen siendo visibles en el navegador
  • Es una falsa sensación de seguridad

❌ NO compartas tu GitHub Personal Access Token

  • Este SÍ es sensible
  • Solo guárdalo en el dashboard (se almacena de forma segura)
  • Nunca lo incluyas en el código fuente

✅ Lo que SÍ Debes Hacer

✅ Configurar correctamente las Reglas de Firestore

  1. Ve a Firebase Console
  2. Firestore Database → Rules
  3. Copia el contenido de firestore.rules
  4. Publica las reglas

✅ Configurar Dominios Autorizados

  1. Firebase Console → Authentication → Settings
  2. Authorized domains
  3. Solo agrega dominios que controlas

✅ Monitorear el Uso

  1. Revisa Firebase Console regularmente
  2. Verifica usuarios registrados
  3. Revisa el uso de Firestore

✅ Mantener las Reglas Actualizadas

  • Revisa las reglas cuando agregues nuevas funcionalidades
  • Prueba las reglas antes de publicarlas
  • Documenta los cambios

🔐 Datos Realmente Sensibles

Los únicos datos que debes proteger son:

  1. GitHub Personal Access Token

    • ✅ Almacenado de forma segura en Firestore
    • ✅ Protegido por reglas de seguridad
    • ✅ Solo el usuario propietario puede acceder
  2. Contraseñas de Usuarios

    • ✅ Hasheadas automáticamente por Firebase
    • ✅ Nunca se almacenan en texto plano
    • ✅ Firebase maneja todo de forma segura
  3. Datos Personales en Firestore

    • ✅ Protegidos por reglas de Firestore
    • ✅ Solo accesibles por el usuario propietario
    • ✅ Requieren autenticación

📊 Resumen

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

🎯 Conclusión

Tu dashboard está seguro porque:

  1. ✅ Las reglas de Firestore protegen los datos
  2. ✅ La autenticación verifica la identidad de usuarios
  3. ✅ Los dominios autorizados previenen uso no autorizado
  4. ✅ 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

There aren't any published security advisories