FireShield
← Todos los artículos

Guía

¿Es seguro que tu API key de Firebase sea pública?

3 de noviembre de 2026 · 4 min de lectura

Firebase dice que sus API keys pueden ir en tu código, y es así, con dos condiciones. Qué puede hacer alguien con tu clave, qué no, y cómo cerrar el hueco.

La respuesta corta

Sí. Firebase dice "API keys for Firebase services are OK to include in code or checked-in config files." (las API keys de los servicios de Firebase se pueden incluir en el código o en archivos de configuración versionados) (API keys de Firebase). Tu configuración web, google-services.json y GoogleService-Info.plist llevan la clave, y cada usuario de tu app tiene una copia.

Pero pública no es lo mismo que inofensiva. La clave es segura cuando se cumplen dos cosas: solo puede llamar a las APIs que tu app necesita, y tus datos están protegidos con Security Rules y App Check. Si falla cualquiera de las dos, la clave se convierte en la puerta a tu factura.

Por qué es pública a propósito

La mayoría de las API keys funcionan como contraseñas. Las de Firebase no: dicen a qué proyecto va una petición, para que Google aplique cuotas y facturación. Firebase explica que "API keys for Firebase services are not used to control access to backend resources" (las API keys de los servicios de Firebase no se usan para controlar el acceso a los recursos del backend). Con sus propias palabras: "None of the Firebase-related APIs use an API key as authorization for calling the API." (ninguna de las APIs relacionadas con Firebase usa una API key como autorización para llamar a la API).

Quién puede leer o escribir qué lo deciden las Security Rules de Firebase, y qué apps pueden llamar a tu backend, App Check. Por eso esconder la clave no sirve de nada, y por eso Firebase avisa: "Don't rely only on restricting and/or obscuring your API keys." (no confíes solo en restringir u ocultar tus API keys). Todo lo que hay en tu frontend, variables de entorno incluidas, acaba en el código que descargan tus usuarios.

Lo que alguien no puede hacer con tu clave

  • Leer o cambiar tus datos. No, si tus Security Rules comprueban quién pregunta. La clave no se salta las reglas.
  • Iniciar sesión como uno de tus usuarios. No, sin las credenciales de ese usuario.
  • Llamar a APIs que la clave no tiene permitidas. Con restricciones de API, cualquier otra API la rechaza.

Lo que alguien sí puede hacer con ella

  • Llamar a cualquier API que la clave permita, a tu cuenta. Una clave sin restringir funciona con todas las APIs activadas en el proyecto. Si Gemini, Maps u otra API de pago está activada, un desconocido puede usarla y pagas tú. Así ocurrió una factura de Gemini de 82.314 $.
  • Machacar tus endpoints de inicio de sesión. Firebase advierte que alguien con tu clave podría "use your API key to access Firebase's authentication endpoints and make authentication requests against your project." (usar tu API key para acceder a los endpoints de autenticación de Firebase y hacer peticiones de autenticación contra tu proyecto). Por ejemplo, para probar contraseñas. Recomienda bajar la cuota de la API Identity Toolkit a tu tráfico normal.
  • Usar tu backend desde su propio código. Con tu configuración, un script puede leer y escribir todo lo que tus reglas permitan, y disparar lecturas y escrituras mientras lo hace. App Check es lo que distingue tu app de ese script.

Cómo hacer segura una clave pública

  • Restringe sus APIs. Permite solo las APIs que tu app llama. Paso a paso: cómo restringir una API key de Firebase.
  • Nunca pongas en el cliente una clave que no sea de Firebase. Una clave de la Gemini Developer API, una clave de servidor de Maps o un archivo de cuenta de servicio son secretos de verdad. Firebase dice que la clave de Gemini "should never be included in your code or configuration files." (nunca debe incluirse en tu código ni en tus archivos de configuración).
  • Cierra tus Security Rules. Nada de allow read, write: if true fuera de un proyecto de pruebas.
  • Activa App Check. Es la herramienta de Firebase para "preventing unauthorized clients from accessing your backend resources" (impedir que clientes no autorizados accedan a los recursos de tu backend), aunque Firebase reconoce que "prevents some, but not all, abuse vectors" (evita algunos vectores de abuso, pero no todos).
  • Limita el volumen. Una cuota diaria en las APIs de pago y un presupuesto que dispare una acción, no solo un email, acotan lo que puede costar un hueco que se te escape (cómo limitar el gasto en Firebase).
Logo de FireWand

¿Gestionas una base de datos de Firebase Data Connect?

FireWand te permite explorar, filtrar y editar tus tablas con una consola SQL de verdad, gratis para tu primer proyecto.

Prueba FireWand →