Sök…


Introduktion

Med Firebase Realtime-databas är dina databasregler din serversidan säkerhet. Du måste vara mycket försiktig och medveten om vem som har tillgång till din databas. Det är viktigt att ingen får tillgång till dina data som inte borde göra det.

Som standard tillåter Firebase Realtime-databasreglerna alla autentiserade användare att läsa och skriva alla data, det är förmodligen inte det du vill att din app ska göra.

Titta på nedanstående exempel för olika scenarier.

Anmärkningar

Firebase Realtime-databasen tillhandahåller ett flexibelt, uttrycksbaserat regelspråk med JavaScript-liknande syntax för att enkelt definiera hur dina data ska struktureras, hur de ska indexeras och när dina data kan läsas från och skrivas till. I kombination med våra autentiseringstjänster kan du definiera vem som har tillgång till vilken information och skydda dina användares personliga information från obehörig åtkomst.

Som standard kräver databasreglerna Firebase-autentisering och ger fullständig läs- och skrivbehörighet endast för autentiserade användare. Standardreglerna säkerställer att din databas inte är tillgänglig för någon innan du får chansen att konfigurera i

Officiell dokumentation

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

Hur man konfigurerar regler

  1. Gå in i Firebase-konsolen.
  2. Välj ditt projekt
  3. Klicka på databasavsnittet till vänster och välj sedan fliken Regler.

Om du vill testa dina säkerhetsregler innan du lägger dem i produktion kan du simulera operationer i konsolen med simulera-knappen uppe till höger i regleredigeraren.

Standardreglerna

Standardreglerna kräver autentisering.
De tillåter fullständig läs- och skrivåtkomst till autentiserade användare av din app. De är användbara om du vill ha data öppna för alla användare av din app men inte vill att de ska vara öppna för världen.

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

Hur du ställer in dina filer offentligt läsbara och skrivbara

Definiera bara:

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

Det kan vara användbart under utvecklingen men uppmärksamma eftersom denna åtkomstnivå betyder att vem som helst kan läsa eller skriva till din databas .

Hur du inaktiverar läs- och skrivåtkomst

Du kan definiera privata regler för att inaktivera läs- och skrivåtkomst till din databas av användare. Med dessa regler kan du bara komma åt databasen när du har administrativa behörigheter (som du kan få genom att komma åt databasen via Firebase-konsolen eller genom att logga in från en server ) .

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

Hur man ger åtkomst endast till autentiserade användare

Här är ett exempel på en regel som ger varje autentiserad användare en personlig nod vid /users/$user_id där $ user_id är ID för användaren som erhållits genom autentisering .

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

Hur tillåts läsning av specifika objekt från gruppen, men förhindra att lista gruppmedlemmar

Det är vanligt att skapa grupper av objekt genom att skapa enkla värdnoder med artikel-ID som nyckel. Vi kan till exempel lägga till en användare i gruppen "administratörer" genom att skapa en nod vid /administrators/$user_id med ett värde som är true . Vi vill inte att någon ska veta vilka administratörer är av säkerhetsskäl, men vi vill fortfarande kontrollera om en autentiserad användare är administratör . Med dessa regler kan vi göra just det:

{
  "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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow