Buscar..


Introducción

Con Firebase Realtime Database, las reglas de su base de datos son la seguridad del lado del servidor. Debe ser muy cuidadoso y consciente de quién tiene acceso a su base de datos. Es importante que nadie obtenga acceso a sus datos que no deberían.

De manera predeterminada, las reglas de la base de datos en tiempo real de Firebase permiten que cualquier usuario autenticado lea y escriba todos los datos, probablemente esto no sea lo que usted quiere que haga su aplicación.

Eche un vistazo a los ejemplos a continuación para diferentes escenarios.

Observaciones

La base de datos en tiempo real de Firebase proporciona un lenguaje de reglas flexible y basado en expresiones con una sintaxis similar a JavaScript para definir fácilmente cómo deben estructurarse sus datos, cómo deben indexarse ​​y cuándo se pueden leer y escribir sus datos. Combinado con nuestros servicios de autenticación, puede definir quién tiene acceso a qué datos y proteger la información personal de sus usuarios del acceso no autorizado.

De forma predeterminada, las reglas de su base de datos requieren la autenticación Firebase y otorgan permisos completos de lectura y escritura a los usuarios autenticados. Las reglas predeterminadas aseguran que nadie pueda acceder a su base de datos antes de que tenga la oportunidad de configurar i

Documentacion oficial

https://firebase.google.com/docs/database/security/quickstart

Cómo configurar reglas

  1. Entra en la consola de Firebase.
  2. Elige tu proyecto
  3. Haga clic en la sección Base de datos a la izquierda y luego seleccione la pestaña Reglas.

Si desea probar sus reglas de seguridad antes de ponerlas en producción, puede simular operaciones en la consola utilizando el botón Simular en la parte superior derecha del editor de reglas.

Las reglas por defecto

Las reglas predeterminadas requieren autenticación.
Permiten el acceso completo de lectura y escritura a los usuarios autenticados de su aplicación. Son útiles si desea que los datos estén abiertos para todos los usuarios de su aplicación, pero no lo desean para el mundo.

// These rules require authentication
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Cómo configurar tus archivos públicamente legibles y grabables

Solo define:

// These rules give anyone, even people who are not users of your app,
// read and write access to your database
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Puede ser útil durante el desarrollo, pero preste atención porque este nivel de acceso significa que cualquiera puede leer o escribir en su base de datos .

Cómo deshabilitar el acceso de lectura y escritura

Puede definir reglas privadas para deshabilitar el acceso de lectura y escritura a su base de datos por parte de los usuarios. Con estas reglas, solo puede acceder a la base de datos cuando tiene privilegios administrativos (que puede obtener al acceder a la base de datos a través de la consola Firebase o al iniciar sesión desde un servidor ) .

// These rules don't allow anyone read or write access to your database
{
  "rules": {
    ".read": false,
    ".write": false
  }
}

Cómo conceder acceso solo a usuarios autenticados.

Este es un ejemplo de una regla que le otorga a cada usuario autenticado un nodo personal en /users/$user_id donde $ user_id es el ID del usuario obtenido a través de la autenticación .

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
  "rules": {
    "users": {
      "$user_id": {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

Cómo permitir la lectura de un elemento específico del grupo, pero evitar la inclusión de miembros del grupo

Es una práctica común crear grupos de elementos mediante la creación de nodos de valor simple con ID de elemento como clave. Por ejemplo, podemos agregar un usuario al grupo "administradores" creando un nodo en /administrators/$user_id con un valor true . No queremos que nadie sepa quiénes son los administradores, por razones de seguridad, pero aún así queremos comprobar si un usuario autenticado es administrador . Con estas reglas podemos hacer precisamente eso:

{
  "rules": {
    "administrators": {
      // No one can list administrators
      ".read": "false",
      "$uid": {
        // Authenticated user can check if they are in this group
        ".read": "$uid === auth.uid",
        // Administrators can write
        ".write": "data.parent().child(auth.uid).val() === true",
        // Allow only add or delete, no duplicates
        ".validate": "!data.exists() || !newData.exists() || newData.isBoolean()",
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow