Voltar para posts
TIP

A falha de segurança que eu mesmo coloquei no código.

25 de maio de 20263 min de leitura

Durante uma revisão do projeto da barbearia, encontrei algo que me fez parar.

No arquivo de login, os campos de email e senha tinham valores padrão definidos em código:

email: "gabriel@email.com"

password: "123456"

Eram dados de teste que ficaram esquecidos. Mas em produção, qualquer pessoa que abrisse o DevTools do browser e inspecionasse o JavaScript compilado conseguia ver essas credenciais.

Por que isso é grave

O Next.js compila o código do cliente e serve via JavaScript estático. Qualquer string hardcoded num componente React fica exposta no bundle — incluindo credenciais.

Não é necessário acesso ao repositório. Basta abrir o browser, ir às ferramentas de desenvolvimento e procurar no source.

A correção é simples

tsx
1const [email, setEmail] = useState("");
2const [password, setPassword] = useState("");

Duas strings vazias. Isso é tudo que era preciso.

A lição maior

Dados de teste não devem existir em produção. Parece óbvio, mas quando estás a desenvolver rápido e a iterar, é fácil esquecer o que ficou para trás.

Um processo que ajuda: antes de qualquer deploy, fazer uma busca simples no código por termos como "password", "secret", "token", "123". Não é infalível, mas apanha os casos mais comuns.

Às vezes é sobre não deixar a porta da frente aberta por descuido.