Segurança em aplicativos React Native - um tópico subestimado

$ cat posts/react-native-security.md

# Segurança em aplicativos React Native - um tópico subestimado

@date25 de novembro de 2025
@read4 min de leitura

Muitos aplicativos feitos em React Native deixam a segurança de lado. O resultado? Apps cheios de falhas básicas, que podem ser exploradas facilmente. Trabalhando com apps reais, encontrei problemas que vão do simples descuido à prática arriscada:

 

  • Uso de AsyncStorage para informações confidenciais - Guardar API Keys ou tokens de autenticação no AsyncStorage é como anotar sua senha num post-it e deixar na tela. AsyncStorage não foi feito para segredos.
  • Exposição de dados desnecessários no client - Muitos apps carregam dados que o usuário não precisa ver, aumentando a superfície de ataque.
  • console.log revelando informações sensíveis - Logs de tokens, dados de requisição ou erros da API nunca devem ir para produção.
  • Desativar HTTPS para endpoints HTTP - Sem HTTPS, qualquer invasor pode interceptar o tráfego e roubar informações.
  • Tokens e chaves sem expiração - Um token que nunca expira é como uma chave que abre sua casa para sempre. Se vazado, o invasor terá acesso indefinido.
  • Excesso de lógica no client - Regras críticas de negócio no client podem ser manipuladas. Quem decide se uma ação é válida deve ser sempre o servidor.
  • Validações incorretas de inputs - O client nunca deve ser o responsável final pela validação. Sem validação no servidor, qualquer payload manipulado pode causar problemas.

 

E por aí vai...

 

Por que isso acontece?

Na maioria das vezes, não é questão de má-fé ou falta de vontade. Um dos problemas é pressa de entrega ou o famoso "depois a gente vê". A consequência é que o client se torna uma bomba-relógio: pequenas falhas se acumulam e, mais cedo ou mais tarde, podem ser exploradas, causando danos ao usuário e à empresa.

 

Nesse artigo, pretendo abordar algumas boas práticas e perguntas que já vi cair em entrevistas para segurança em aplicativos RN. Mesmo sendo híbrido, ainda podemos usar métodos nativos para reforçar a segurança.

 

Checklist essencial de segurança em React Native

Para não deixar seu app vulnerável, preste atenção a esses pontos:

 

  • Armazenamento seguro: use Keychain (iOS) ou Keystore (Android), nunca AsyncStorage para segredos.
  • Comunicação segura: HTTPS obrigatório, com validação de certificados.
  • Logs limpos: nunca exponha dados sensíveis em console.log.
  • Menos dados no client: carregue apenas o necessário. Dados críticos ficam no servidor.
  • Tokens e chaves: sempre com expiração e mecanismo de revogação.
  • Regras de negócio no servidor: o client envia requisições, mas não decide resultados críticos. É essencial manter o menor número de regras de negócio no lado do client.
  • Validações no mobile: devem ser feitas no client para melhorar a experiência do usuário, mas o servidor deve ser sempre a autoridade final.
  • Proteções adicionais: ofuscação de código, checagem de integridade e proteção contra engenharia reversa.

 

Assuntos avançados que caem em entrevistas

Se você quer se preparar para entrevistas em fintechs, bancos ou apps sensíveis, vale conhecer:

 

  • OWASP Top 10: as dez falhas mais comuns em apps, incluindo mobile.
  • SAST (Static Application Security Testing): análise de código sem rodar o app para identificar falhas.
  • DAST (Dynamic Application Security Testing): testes com o app em execução simulando ataques reais.
  • DexGuard / ixGuard: proteção de código contra engenharia reversa. DexGuard é para Android, ixGuard para iOS.
  • SonarQube / SonarCloud: ferramentas que identificam problemas de segurança e qualidade no código.
  • Segurança de comunicação e criptografia: Criptografia de dados sensíveis em trânsito e em repouso.

 

Conclusão

Segurança em React Native não é opcional. Ela deve estar presente em todas as etapas de desenvolvimento.

 

Um app inseguro não é apenas um bug: é um risco real para usuários e empresas. Se você quer trabalhar em fintechs, bancos ou qualquer app que lide com dados sensíveis, dominar essas práticas é obrigatório e você vai se tornar um excelente desenvolvedor mobile.