Ir a la consola
Prueba Cloud Firestore: Descubre la base de datos flexible y escalable de Firebase y Google Cloud Platform. Obtén más información sobre Cloud Firestore.

Resuelve problemas

Si recibes una alerta en la que se indica que Firebase Realtime Database es insegura, puedes modificar y probar las reglas de Realtime Database para resolver esos problemas. Usa esta guía a fin de verificar las reglas de Realtime Database, comprender los posibles problemas y probar los cambios antes de implementarlos.

Revisa tus reglas de Realtime Database

Dirígete a la pestaña Reglas en Firebase console para ver tus reglas de Realtime Database existentes.

Conoce tus reglas de Realtime Database

Las reglas de Realtime Database se interponen entre tus datos y un usuario malicioso. Aunque es común comenzar a desarrollar con reglas abiertas que otorguen acceso de lectura y escritura a todos los usuarios, es importante que las configures para proteger los datos antes de implementar tu app. Cuando lo hagas, usa el simulador para probar diferentes reglas.

Si eres nuevo en el uso de las reglas de Realtime Database, obtén más información sobre cómo funcionan en Comienza a usar las reglas de Database.

Soluciona problemas comunes

Es posible que las reglas de Realtime Database que estableciste en la configuración predeterminada o que usaste en un principio a fin de desarrollar tu app con Realtime Database no sean las mejores una vez que la implementes. Revisa los siguientes obstáculos más comunes y las posibles soluciones.

Acceso abierto

Al configurar Realtime Database, es posible que hayas establecido reglas que otorgan acceso abierto durante el desarrollo. Tu base de datos puede parecer segura si eres el único usuario con acceso a ella, sin embargo, si implementaste tu app y no autenticas usuarios, tus datos serán vulnerables ante usuarios maliciosos.

No se recomienda: Acceso de lectura y escritura a todos los usuarios

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
Solución: Reglas que restrinjan el acceso de lectura y escritura Compila reglas que tengan sentido según la jerarquía de los datos. Una de las soluciones comunes a este problema es la seguridad basada en usuarios con Firebase Authentication. Obtén más información en Seguridad basada en usuarios.

Acceso para cualquier usuario autenticado

En ocasiones, las reglas de Realtime Database verifican que el usuario acceda a su cuenta, pero no restringen el acceso según esa autenticación. Si una de tus reglas incluye auth !== null, confirma que quieres que cualquier usuario autenticado tenga acceso a los datos.

No se recomienda: Cualquier usuario autenticado tiene acceso de lectura y escritura en toda tu base de datos

{
  "rules": {
      // any logged-in user access your data
      ".read": "auth !== null",
      ".write": "auth !== null"
   }
}
Solución: Limita el acceso con la variable auth. Cuando verifiques la autenticación, te recomendamos usar una de las propiedades de autenticación para restringir aún más el acceso de algunos usuarios a conjuntos de datos específicos. Obtén más información sobre la variable auth en Seguridad basada en usuarios.

Reglas heredadas de forma inadecuada

Las reglas de Realtime Database se transmiten en cascada, con reglas en rutas de acceso superiores y más superficiales que anulan las de los nodos secundarios más profundos. Cuando escribes una regla en un nodo secundario, recuerda que solo puede otorgar privilegios adicionales. No puedes definir mejor o revocar el acceso a los datos en una ruta de acceso más profunda en la base de datos.

No se recomienda: Definir mejor las reglas en rutas de acceso secundarias

{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
Solución: Escribir reglas en rutas de acceso superiores que sean amplias y otorgar privilegios más específicos en rutas de acceso secundarias. Si las necesidades de acceso a tus datos requieren un mayor nivel de detalle, aplícalo en tus reglas. Obtén más información sobre reglas de Realtime Database en cascada en Protege tus datos.

Acceso cerrado

Otro enfoque común que puedes aplicar mientras desarrollas la app es mantener tu base de datos bloqueada. Por lo general, esto significa que bloqueaste el acceso de lectura y escritura para todos los usuarios de la siguiente manera:

{
  "rules": {
    ".read": false,
    ".write": false
  }
}

Aunque no genere inseguridad, es posible que provoque problemas cuando lances tu app. Obtén más información sobre la configuración y la implementación de las reglas de Realtime Database.

Prueba tus reglas de Realtime Database

Para probar las reglas actualizadas de Realtime Database, usa la herramienta de simulador de Firebase console.

  1. Para abrirla, haz clic en Simulador, en la pestaña Reglas.
  2. En la configuración del simulador, selecciona las opciones de tu prueba, como estas:
    • Prueba de lectura o escritura
    • Una ubicación específica en tu base de datos, como una ruta de acceso
    • Tipo de autenticación: ID de usuario específico, usuario anónimo autenticado o no autenticado
  3. Haz clic en Ejecutar y busca los resultados en el banner que está arriba de la ventana de reglas.