Integração com APIs
A segurança do frontend depende da robustez da API. A regra número um é: Nunca confie no frontend.
1. Validação de Dados no Backend
O frontend pode ser manipulado. Qualquer validação feita no cliente (ex: formato de e-mail, campos obrigatórios) deve ser obrigatoriamente repetida no backend.
✅ Como fazer
- Envie os dados e deixe que o backend retorne o erro 400 (Bad Request) caso a validação falhe.
- Trate esses erros no frontend para guiar o usuário.
❌ Como não fazer
- Achar que porque o botão de "Enviar" está desabilitado no frontend, o usuário não conseguirá disparar a requisição via console ou Postman.
2. Exposição de Endpoints e Enumeração
- Exposição: Evite expor endpoints que não são usados ou que revelam a estrutura do banco de dados.
- Enumeração de Usuários: Ocorre quando a API retorna mensagens diferentes para "Usuário não encontrado" e "Senha incorreta", permitindo que um atacante descubra quais e-mails estão cadastrados.
✅ Como fazer
- Use mensagens genéricas: "E-mail ou senha inválidos".
3. Rate Limit
Conceito de limitar a quantidade de requisições que um usuário/IP pode fazer em um determinado período.
- Importância: Previne ataques de força bruta (brute force) no login e ataques de negação de serviço (DoS).
4. Tratamento Seguro de Erros
Erros técnicos não devem vazar para o usuário final.
✅ Como fazer
- No frontend, mostre uma mensagem amigável e registre o erro técnico no Sentry.
- Use Status Codes corretos (401 para não autenticado, 403 para não autorizado, 404 para não encontrado).
❌ Como não fazer
- Exibir Stack Traces do banco de dados ou mensagens de erro brutas do servidor no Toast da aplicação.
5. Paginação Segura
Ao solicitar listas, a paginação deve ser controlada pelo backend para evitar que um usuário peça 1 milhão de registros de uma vez e trave o servidor ou a interface.