Técnicas de segurança que uso em meus projetos, técnicas que Vibe coders não fazem
Segurança no Desenvolvimento: Fuja da Armadilha do Vibe Coding com AI:
Com o avanço das AIs e a “simplificação” do desenvolvimento de software, é cada vez mais comum vermos brechas de segurança. Vídeos demonstrando o quão frágeis são alguns SaaS e como é fácil invadir ou manipular dados estão se tornando frequentes.
Existem muitos fatores que contribuem para essas falhas, mas um dos principais é o Vibe Coding: a prática de criar produtos sem saber programar de verdade, ou sabendo apenas o básico, geralmente com o apoio de inteligências artificiais como Claude, Cursor, Windsurf, entre outros.
Neste post, quero te mostrar algumas práticas fundamentais para evitar cair na armadilha do Vibe Coding. São cuidados simples, mas que fazem toda a diferença na segurança do seu projeto.
1 - Dividir Client-Side e Server-Side:
Para nós desenvolvedores isso pode parecer muito básico e simples, principalmente você que estudou como funciona os navegadores e o build de arquivos estáticos do seu projeto no navegador, mas isso pode passar despercebido principalmente quando é muito comum ter toda a aplicação em um projeto React + VITE por exemplo
Divida sua aplicação em Front-end e Back-end(API), principalmente quando há integrações com outros sistemas que precisam de ApiKey, Credenciais, ConnectionStrings de Banco de dados.
Todas essas variáveis de ambiente ficam expostas no index.js do site, caso um conhecedor do assunto tente procurar usando o DevTools, será possível achar essas variáveis mesmo que no seu ambiente de desenvolvimento tenha um .env.
Faça essas integrações que necessitam de variáveis de ambiente importantes, no Back-end, onde você pode subir em uma Cloud ou Vps e não fique exposto para todos no navegador.
2 - Armazenar o Salt-Hash da senha do usuário, e não o valor da senha bruta:
Acredito ser essencial saber disso, armazenar SaltHash da senha no banco é essencial, pois caso seu banco acabe sendo invadido, a última barreira para o invasor descobrir senhas e acabar vazando elas como muito acontece por ai, é transformar a senha em um SaltHash, Hashs são irreversíveis, não é possível saber qual era o valor antes de se tornar aquela sequência de caracteres.
É possível gerar esse Hash com Bibliotecas como:
- BCrypt
- argon2
- (Pesquise Bibliotecas que tem suporte a tecnologia que você usa).
Deixarei algumas fontes sobre esse assunto que me ajudaram a entender mais sobre segurança e senhas:
-
Akita - Sua Segurança é uma DROGA | Gerenciadores de Senhas, 2FA, Encriptação: https://www.youtube.com/watch?v=s7ldn31OEFc
-
Bruno brito - SENHAS - HASH A ÚLTIMA BARREIRA : https://www.youtube.com/watch?v=jy86L6XJ34Y
-
Cristiano Cunha - [Segurança] Salt Key - Armazenando senhas com segurança : https://www.youtube.com/watch?v=U_hWBcdRU94
3 - Autenticação e Validação dos dados que chegam na Sua API:
Parabéns você entendeu que precisa de um Backend(API) caso tenha ApiKeys, Credenciais sigilosas e você pode perder dinheiro caso sejam vazadas, mas agora que você entendeu isso, é preciso estudar e entender como proteger sua API de usuários mal intencionados ou apenas problemas de B.I.O.S (Burro Ignorante Operando Sistema).
Aprenda a Autenticar sua API, proteger seus Endpoints, Gerar Tokens de Autenticação (JWT por exemplo), para que apenas pessoas autorizadas de acordo com a lógica do seu sistema possam ter acesso aos dados e funcionalidades da API.
Caso seja possível usar seu site sem Login, é interessante implementar um ReCaptcha por exemplo, expira muito rápido e muito díficil de replicar na força bruta, foi o que usei para disponibilizar minha ferramenta, o CurriculumAdapter
Valide os dados que estão chegando na API, valide seus formulários no Front-End e o Payload no Backend, para os desenvolvedores C# por exemplo é comum usarmos o FluentValidation ou DataAnnotation nas propriedades da classe
4 - Implemente Rate Limiting para evitar abusos
Mesmo com autenticação e validação, sua API ainda pode ser alvo de abusos. Alguém pode, por exemplo, disparar centenas de requisições por minuto para:
- Forçar tentativas de login (ataques de força bruta);
- Derrubar sua API com excesso de chamadas (DDoS);
- Exceder o uso de recursos e gerar custos desnecessários (em APIs pagas ou servidores).
É aí que entra o Rate Limiting, um mecanismo que limita o número de requisições por IP, por usuário, ou por token em um determinado período de tempo.
Exemplos:
- Máximo de 10 requisições por minuto para o endpoint de login.
- Bloqueio temporário de IPs que estourarem os limites com muita frequência.
Ferramentas recomendadas:
-
Node.js/Express: express-rate-limit
-
.NET/C#: Middleware com políticas de RateLimiterOptions no .NET 7+
APIs em geral: serviços como Cloudflare, AWS API Gateway e NGINX têm suporte nativo a rate limiting.
Obsevações Finais:
Claro que existem outras e outras formas de prevenir brechas de segurança, mas algumas vão depender das regras de negócio do seu sistema
Tome cuidado para cair na ladainha do Vibe Coding e um invasor poder assinar seu SaaS por 5 reais enquanto a assinatura é 30