Recherche…


Introduction

Avec la base de données en temps réel Firebase, vos règles de base de données constituent la sécurité côté serveur. Vous devez faire très attention et savoir qui a accès à votre base de données. Il est important que personne ne puisse accéder à vos données.

Par défaut, les règles de base de données Firebase Realtime permettent à tout utilisateur authentifié de lire et d'écrire toutes les données, ce n'est probablement pas ce que vous souhaitez que votre application fasse.

Regardez les exemples ci-dessous pour différents scénarios.

Remarques

La base de données Firebase Realtime fournit un langage de règles flexible, basé sur des expressions, avec une syntaxe de type JavaScript pour définir facilement la structure de vos données, leur indexation et la lecture et l’écriture de vos données. Combiné à nos services d'authentification, vous pouvez définir qui a accès à quelles données et protéger les informations personnelles de vos utilisateurs contre les accès non autorisés.

Par défaut, vos règles de base de données nécessitent une authentification Firebase et n'accordent des autorisations de lecture et d'écriture complètes qu'aux utilisateurs authentifiés. Les règles par défaut garantissent que votre base de données n'est pas accessible par n'importe qui avant d'avoir la possibilité de configurer i

Documentation officielle

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

Comment configurer les règles

  1. Allez dans la console Firebase.
  2. Choisissez votre projet
  3. Cliquez sur la section Base de données à gauche, puis sélectionnez l'onglet Règles.

Si vous souhaitez tester vos règles de sécurité avant de les mettre en production, vous pouvez simuler des opérations dans la console à l'aide du bouton Simuler situé dans la partie supérieure droite de l'éditeur de règles.

Les règles par défaut

Les règles par défaut nécessitent une authentification.
Ils permettent un accès complet en lecture et en écriture aux utilisateurs authentifiés de votre application. Ils sont utiles si vous souhaitez que les données soient ouvertes à tous les utilisateurs de votre application, mais ne veulent pas qu’ils soient ouverts au monde.

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

Comment définir vos fichiers lisibles et accessibles en écriture

Il suffit de définir:

// 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
  }
}

Cela peut être utile pendant le développement, mais faites attention car ce niveau d'accès signifie que tout le monde peut lire ou écrire dans votre base de données .

Comment désactiver l'accès en lecture et en écriture

Vous pouvez définir des règles privées pour désactiver l'accès en lecture et en écriture à votre base de données par les utilisateurs. Avec ces règles, vous pouvez uniquement accéder à la base de données lorsque vous disposez de privilèges administratifs (que vous pouvez obtenir en accédant à la base de données via la console Firebase ou en vous connectant depuis un serveur ) .

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

Comment accorder l'accès uniquement aux utilisateurs authentifiés

Voici un exemple de règle qui attribue à chaque utilisateur authentifié un nœud personnel sur /users/$user_id où $ user_id est l'ID de l'utilisateur obtenu via Authentication .

// 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"
      }
    }
  }
}

Comment autoriser la lecture d'un élément spécifique d'un groupe, mais empêcher la liste des membres du groupe

Il est courant de créer des groupes d'éléments en créant des nœuds de valeur simples avec l'ID d'élément comme clé. Par exemple, nous pouvons ajouter un utilisateur au groupe "administrateurs" en créant un nœud à l'adresse /administrators/$user_id avec une valeur true . Nous ne voulons pas que quiconque sache qui sont les administrateurs, pour des raisons de sécurité, mais nous voulons toujours vérifier si un utilisateur authentifié est administrateur . Avec ces règles, nous pouvons faire exactement cela:

{
  "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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow