Firebase em aplicativos Mobile
Oi, pessoal.
Estou criando uma aplicação mobile que funcionará como marketplace. Entende-se que existirão diversos usuários, publicando produtos, lendo produtos de outros usuários, editando itens, etc.
Como o fluxo de operação de leitura e escrita é grande, entendo a necessidade de utilizar técnicas de caching no front-end pra minimizar o uso de recursos, já que o Firebase já oferece essa ferramenta.
No entanto, a maior problemática que vejo em usar o firebase para mobile é que as chaves API do projeto ficarão expostas no cliente porque já estão no bundle do app que é enviado ao cliente. Gostaria de saber se vocês tiveram experiências parecidas com o Firebase, e qual foi a solução que vocês encontraram.
No geral, entendo que eu conseguindo privar abusos do app, como alguém pegando as chaves API e gerando um simples servidor Node.js para fazer milhares de requisições no meu projeto, vai ser o suficiente pra fazer o app rodar efetivamente. E também, colocando as regras no Firestore para que apenas usuários autenticados tenham acesso aos recursos - o que ainda não impede da pessoa criar uma função para que ela se registre + logue e depois comece a realizar o abuso possuindo um token de autenticação já que o firebase não limita uso para usuário.
Até estou cogitando colocar um back-end simples com Node.js + Express para rodar por cima do Firebase, assim eu esconderia as chaves nesse projeto atrás do back-end próprio e configuraria até mais o retorno da cada endpoint. E, direto no aplicativo, apenas faria as chamadas nas rotas necessárias. Também não sei se essa seria a solução ideal, mas não queria perder as vantagens do Firebase no geral que já tem cache, solução real-time pro firestore, entre outras features.
Sei, por exemplo, da ferramente 'App Check' do Firebase, que provavelmente vai ser o que vou colocar pra limitar para que apenas meu App possua o Token válido pra rodar o projeto Firebase. Só que, ainda assim, possui um limite. Além disso, tentei restringir o uso das chaves API direto no Google Cloud Console, lá tem essa possibilidade, mas fazendo a limitação pro uso dessas chaves, o firestore continua retornando dados para fontes que não possuem a permissão, já o Firebase Authentication é o único que nega acesso realmente, e nega acesso errado ainda, porque mesmo dando acesso pra um cliente confiável, ele ainda nega o acesso.
Enfim, agradeço o suporte de quem tiver boas ideias para soluções pro meu caso.