Verifique as suas regras de segurança Firebase contra 26 erros comuns
Cole as regras do Firestore, do Firebase Storage ou da Realtime Database. O verificador lê o texto e mostra que caminhos deixam qualquer pessoa ler ou escrever.
Resultado
Esta é uma análise estática do texto colado. Não vê custom claims, App Check, a forma dos dados nem regras que nunca foram publicadas; a nota cobre apenas o que as 26 verificações conseguem ler.
O que esta verificação não consegue ver
O verificador lê apenas o texto colado. Não vê custom claims, App Check, a forma dos seus dados nem regras que nunca foram publicadas, por isso um resultado limpo não significa que o projeto é seguro.
As 26 verificações
| Verificação | ID | Serviço | Gravidade |
|---|---|---|---|
| Qualquer pessoa pode escrever no Firestore | fs-open-write | Firestore | Crítica |
| Qualquer pessoa pode ler do Firestore | fs-open-read | Firestore | Média |
| Um match com wildcard recursivo está aberto | fs-recursive-wildcard-open | Firestore | Crítica |
| Regras de modo de teste com data de expiração | fs-test-mode-expiry | Firestore | Crítica |
| Qualquer utilizador autenticado pode escrever | fs-auth-only-write | Firestore | Alta |
| Qualquer utilizador autenticado pode ler | fs-auth-only-read | Firestore | Média |
| Email aceite sem email_verified | fs-email-unverified | Firestore | Média |
| Função lida dos dados do pedido | fs-role-from-request | Firestore | Alta |
| Um wildcard amplo esconde regras mais estritas | fs-wildcard-shadow | Firestore | Alta |
| Os utilizadores podem escrever a sua própria função (heurística) | fs-self-role-write | Firestore | Alta |
| As escritas aceitam quaisquer campos (heurística) | fs-write-no-field-guard | Firestore | Média |
| read não está dividido em get e list | fs-read-not-split | Firestore | Info |
| Sem negação explícita por omissão | fs-no-default-deny | Firestore | Info |
| As regras do Firestore não foram lidas | fs-parse-error | Firestore | Info |
| Qualquer pessoa pode ler ficheiros do Storage | st-open-read | Storage | Média |
| Qualquer pessoa pode escrever no Storage | st-open-write | Storage | Crítica |
| O match {allPaths=**} está aberto | st-recursive-wildcard-open | Storage | Crítica |
| Qualquer utilizador autenticado pode escrever no Storage | st-auth-only-write | Storage | Alta |
| As regras do Storage não foram lidas | st-parse-error | Storage | Info |
| A base de dados inteira pode ser lida por qualquer pessoa | db-root-read-open | Realtime Database | Crítica |
| A base de dados inteira pode ser escrita por qualquer pessoa | db-root-write-open | Realtime Database | Crítica |
| Um nó pode ser lido por qualquer pessoa | db-open-read | Realtime Database | Média |
| Um nó pode ser escrito por qualquer pessoa | db-open-write | Realtime Database | Alta |
| Uma regra de um filho é anulada pelo pai | db-cascade-override | Realtime Database | Alta |
| Qualquer utilizador autenticado pode ler ou escrever em toda a base de dados | db-auth-only-root | Realtime Database | Alta |
| As regras da Realtime Database não foram lidas | db-parse-error | Realtime Database | Info |
Perguntas
O que analisa o verificador de regras Firebase?
Lê as regras de segurança do Firebase que cola para o Firestore, o Cloud Storage e a Realtime Database e procura regras que deixam qualquer pessoa ler ou escrever, regras que só exigem um utilizador autenticado, confiança em dados do cliente e padrões semelhantes.
O texto das minhas regras é guardado?
Não. As regras são processadas em memória na rede da Cloudflare e descartadas assim que a resposta é enviada. Nada é guardado nem registado com o texto.
Quanto posso colar?
Até 48,000 caracteres no total, somando os três campos. Se as suas regras forem mais longas, cole a parte que quer verificar.
Porque pode uma regra de leitura pública estar certa?
Alguns dados são públicos de propósito, como um catálogo de produtos ou artigos de blogue. No Firestore e no Storage, o verificador conta uma leitura sem condição como um problema médio e retira 10 pontos, porque não consegue saber se os dados são privados. Se os dados são públicos de propósito, pode aceitar esse custo. Só na raiz da Realtime Database, classifica uma leitura aberta como mais grave.
O que são regras em modo de teste?
Quando cria uma base de dados Firestore em modo de teste, a consola escreve uma regra que permite tudo até uma data, com request.time. Até essa data qualquer pessoa pode ler e escrever; depois tudo é negado e a aplicação deixa de funcionar. Substitua-a por condições reais antes do lançamento.
Como se propagam em cascata as regras da Realtime Database?
Na Realtime Database, uma regra que dá acesso aplica-se a tudo o que está abaixo, e um filho não a pode retirar. Uma regra mais estrita num filho, sob um pai permissivo, nunca se aplica, e é por isso que o verificador a assinala.
O que significa a nota?
Resume apenas o que as verificações conseguem ler no texto colado: uma pontuação de 100 menos uma penalização por cada verificação falhada, definida pelo problema mais grave que essa verificação encontrou, e qualquer problema crítico dá F. Um ponto médio também pode ser uma heurística que pede para verificar à mão, porque só o texto não mostra se é um problema real. Um A não prova que o projeto é seguro, porque custom claims, App Check e os próprios dados estão fora do alcance.