Teste o Cloud Firestore: conheça o banco de dados escalonável e flexível do Firebase e do Google Cloud Platform. Saiba mais sobre o Cloud Firestore.

Resolver falhas de segurança

Se você receber um alerta informando que o Firebase Realtime Database não é seguro, poderá resolver essas falhas modificando e testando suas regras para esse banco de dados. Use este guia para verificar suas regras do Firebase Database, entender possíveis falhas de segurança e testar suas alterações antes de implantá-las.

Revisar suas regras do Firebase Database

Para visualizar suas regras atuais do Firebase Database, acesse a guia Regras no Console do Firebase.

Compreender suas regras do Firebase Database

As regras do Firebase Database protegem seus dados de um usuário mal-intencionado. Embora seja comum começar a desenvolver com regras abertas que permitem acesso de leitura e gravação a todos os usuários, é importante configurar regras para proteger seus dados antes de implantar o aplicativo. Use o simulador durante a configuração para testar regras diferentes.

Se você for iniciante na configuração de regras do Firebase Database, saiba mais sobre como elas funcionam na página Primeiros passos com as regras de bancos de dados.

Resolver falhas de segurança comuns

As regras do Firebase Database que você configurou por padrão ou com as quais trabalhou inicialmente na fase de desenvolvimento podem não ser as melhores regras para o aplicativo implantado. Veja a seguir as armadilhas mais comuns e as possíveis resoluções.

Acesso aberto

Ao configurar o Realtime Database, pode ser que você tenha definido suas regras para permitir acesso aberto durante o desenvolvimento. Se você for o único usuário com acesso ao seu banco de dados, isso poderá parecer seguro. No entanto, se o aplicativo já estiver implantado sem autenticação de usuários, seus dados estarão vulneráveis a usuários mal-intencionados.

Não recomendado: acesso de leitura e gravação a todos os usuários.

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
Solução: regras que restringem o acesso de leitura e gravação. Crie regras que façam sentido para sua hierarquia de dados. Uma das soluções comuns para essa falha é a segurança baseada no usuário com o Firebase Authentication. Saiba mais na página Segurança baseada no usuário.

Acesso para qualquer usuário autenticado

Às vezes, as regras do Firebase Database verificam se um usuário está conectado, mas não restringem o acesso com base nessa autenticação. Se uma das suas regras incluir auth !== null, verifique se qualquer usuário conectado pode ter acesso aos dados.

Não recomendado: qualquer usuário conectado tem acesso de leitura e gravação a todo o seu banco de dados.

{
  "rules": {
      // any logged-in user access your data
      ".read": "auth !== null",
      ".write": "auth !== null"
   }
}
Solução: acesso restrito usando uma variável auth. Se você fizer a verificação de autenticação, talvez também seja interessante usar uma dessas propriedades para restringir ainda mais o acesso de determinados usuários a conjuntos de dados específicos. Saiba mais sobre a variável auth na página Segurança com base no usuário.

Regras herdadas indevidamente

As regras do Firebase Database são aplicadas em cascata. Assim, regras em caminhos pai mais superficiais substituem regras em nodes filhos mais profundos. Ao gravar uma regra em um node filho, lembre-se de que ela só pode conceder privilégios adicionais. Não é possível refinar ou revogar o acesso aos dados em um caminho mais profundo do seu banco de dados.

Não recomendado: refinar regras em caminhos filhos.

{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
Solução: grave regras em caminhos pai que sejam amplos e conceda privilégios mais específicos a caminhos filhos. Se suas necessidades de acesso a dados exigirem mais granularidade, crie regras detalhadas. Saiba mais sobre como aplicar regras do Firebase Database em cascata na página Proteger seus dados.

Acesso fechado

Ao desenvolver seu aplicativo, outra abordagem comum é manter seu banco de dados fechado. Normalmente, isso significa bloquear o acesso de leitura e gravação a todos os usuários da seguinte maneira:

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

Essa não é uma opção insegura, mas pode causar a problemas ao lançar seu aplicativo. Saiba mais sobre como configurar e implantar as regras do Firebase Database.

Testar suas regras do Firebase Database

Para testar suas regras atualizadas do Firebase Database, use a ferramenta de simulação no Console do Firebase.

  1. Para abrir o simulador, clique em Simulador na guia Regras.
  2. Nas configurações do Simulador, selecione as opções para o teste, incluindo o seguinte:
    • gravações ou leituras de teste
    • um local específico no seu banco de dados, como um caminho
    • o tipo de autenticação: usuário anônimo autenticado, não autenticado ou um código de usuário específico
  3. Clique em Executar e procure os resultados no banner acima da janela de regras.

Enviar comentários sobre…

Firebase Realtime Database
Precisa de ajuda? Acesse nossa página de suporte.