firebase
Regole del database
Ricerca…
introduzione
Con Firebase Realtime Database, le regole del tuo database rappresentano la tua sicurezza sul lato server. Devi essere molto attento e consapevole di chi ha accesso al tuo database. È importante che nessuno possa accedere ai tuoi dati che non dovrebbero.
Per impostazione predefinita, le regole del database in tempo reale di Firebase consentono a qualsiasi utente autenticato di leggere e scrivere tutti i dati, probabilmente non è ciò che si desidera fare.
Dai uno sguardo agli esempi qui sotto per diversi scenari.
Osservazioni
Il database in tempo reale di Firebase fornisce un linguaggio di regole flessibile basato su espressioni con sintassi simile a JavaScript per definire facilmente la modalità di strutturazione dei dati, come deve essere indicizzato e quando è possibile leggere e scrivere i dati. In combinazione con i nostri servizi di autenticazione, è possibile definire chi ha accesso a quali dati e proteggere le informazioni personali degli utenti da accessi non autorizzati.
Per impostazione predefinita, le regole del database richiedono l'autenticazione Firebase e garantiscono permessi di lettura e scrittura completi solo agli utenti autenticati. Le regole predefinite assicurano che il tuo database non sia accessibile da chiunque prima di avere la possibilità di configurare i
Documentazione ufficiale
https://firebase.google.com/docs/database/security/quickstart
Come configurare le regole
- Vai nella console di Firebase.
- Scegli il tuo progetto
- Fare clic sulla sezione Database sulla sinistra, quindi selezionare la scheda Regole.
Se desideri testare le tue regole di sicurezza prima di metterle in produzione, puoi simulare operazioni nella console utilizzando il pulsante Simula nella parte superiore destra dell'editor delle regole.
Le regole predefinite
Le regole predefinite richiedono l'autenticazione.
Consentono il pieno accesso in lettura e scrittura agli utenti autenticati della tua app. Sono utili se vuoi che i dati siano aperti a tutti gli utenti della tua app ma non vuoi che si aprano al mondo.
// These rules require authentication
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
Come impostare i tuoi file leggibili e scrivibili
Basta definire:
// 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
}
}
Può essere utile durante lo sviluppo, ma fai attenzione perché questo livello di accesso significa che chiunque può leggere o scrivere nel tuo database .
Come disabilitare l'accesso in lettura e scrittura
È possibile definire regole private per disabilitare l'accesso in lettura e scrittura al proprio database da parte degli utenti. Con queste regole, puoi accedere al database solo quando disponi di privilegi amministrativi (che puoi ottenere accedendo al database tramite la console Firebase o effettuando l'accesso da un server ) .
// These rules don't allow anyone read or write access to your database
{
"rules": {
".read": false,
".write": false
}
}
Come concedere l'accesso solo agli utenti autenticati
Ecco un esempio di una regola che assegna a ciascun utente autenticato un nodo personale a /users/$user_id
dove $ user_id è l'ID dell'utente ottenuto tramite l' autenticazione .
// 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"
}
}
}
}
Come consentire la lettura di un elemento specifico dal gruppo, ma evitare di elencare i membri del gruppo
È pratica comune creare gruppi di elementi creando nodi con valore semplice con ID elemento come chiave. Ad esempio, possiamo aggiungere un utente al gruppo "amministratori" creando un nodo su /administrators/$user_id
con un valore true
. Non vogliamo che nessuno sappia chi sono gli amministratori, per motivi di sicurezza, ma vogliamo comunque verificare se un utente autenticato è un amministratore . Con queste regole possiamo fare proprio questo:
{
"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()",
}
}
}
}