Segurança da informação é um daqueles assuntos que a maioria dos desenvolvedores prefere ignorar até o dia em que o servidor é invadido, o banco de dados é apagado e o desespero bate na porta. A boa notícia é que você não precisa ser um hacker experiente ou gastar fortunas em softwares complexos para evitar a maioria esmagadora dos ataques. Hoje, eu vou te mostrar os 4 passos essenciais de segurança básica que eu aplico em todos os meus projetos web.
Se você coloca sistemas no ar e tem suado frio pensando se os dados dos seus usuários estão protegidos, esse vídeo é para você.
Passo #1: A regra de ouro — Nunca confie no usuário
Esse é o mantra principal que deve guiar todo o seu código. O ser humano (ou os robôs criados por eles) vai tentar inserir de tudo nos seus formulários. Se você pede um e-mail, eles vão enviar um script malicioso. Se você pede um número de telefone, eles vão tentar rodar um comando de banco de dados.
Todo e qualquer input — seja um campo de formulário de contato, um parâmetro passado via URL (?id=5) ou até mesmo cabeçalhos HTTP — deve ser tratado como radioativo.
- Valide a entrada: Se você espera um número inteiro, garanta no código que o dado recebido seja estritamente numérico;
- Escape a saída: Antes de exibir qualquer dado gerado pelo usuário na sua página HTML, use as funções nativas da sua linguagem (como o
htmlspecialcharsno PHP) para converter caracteres especiais. Isso evita o famoso ataque XSS (Cross-Site Scripting), onde um invasor consegue executar scripts no navegador de outros usuários.
Passo #2: Feche as portas do seu banco de dados
Uma das vulnerabilidades mais antigas, documentadas e fáceis de explorar da história da internet continua sendo a causadora da maior parte dos vazamentos de dados: o SQL Injection.
Isso acontece quando um desenvolvedor comete o pecado de concatenar textos diretamente em uma consulta SQL. Exemplo clássico: SELECT * FROM usuarios WHERE email = ' + $email_usuario + '. Se o usuário digitar ' OR 1=1 -- no campo de e-mail, ele derruba a sua lógica e faz login sem precisar de senha.
A solução é incrivelmente simples e já vem embutida em qualquer framework moderno: use consultas parametrizadas (Prepared Statements). Dessa forma, o banco de dados entende perfeitamente que o dado digitado pelo usuário é apenas um "texto bobo" e não um comando executável, neutralizando completamente o ataque.
Passo #3: O perigo mora nas dependências
Hoje em dia ninguém desenvolve sistemas do zero. Nós usamos bibliotecas de terceiros para gerar PDFs, enviar e-mails, validar CPFs, etc. O problema é que, ao instalar dezenas bibliotecas num projeto, você está importando também as vulnerabilidades delas.
Ataques que miram pacotes Open Source desatualizados são extremamente comuns, justamente porque quando uma falha é descoberta, ela se torna de conhecimento público. Os hackers usam robôs varrendo a internet em busca de sites que não atualizaram seus pacotes.
O passo aqui é de governança: crie a rotina de rodar auditorias regulares no seu gerenciador de pacotes (npm audit, composer audit) e mantenha as dependências essenciais do seu sistema sempre atualizadas.
Passo #4: A filosofia do "Menos é Mais"
Na área de segurança, existe um princípio poderoso chamado "redução da superfície de ataque". Funciona assim: quanto menos partes o seu sistema tiver expostas, menos chances ele tem de ser invadido. Um castelo com apenas uma porta muito segura é mais fácil de proteger do que um castelo com 20 janelas, 5 portas e um duto de ventilação abertos.
Traga isso para o seu servidor:
- Não deixe a porta do banco de dados exposta para a internet pública se ela só precisa se comunicar com a sua aplicação internamente;
- Não deixe arquivos sensíveis (como arquivos
.envcom senhas) acessíveis no diretório público do seu servidor web; - Tem um plugin no seu WordPress ou biblioteca no seu código que você não usa mais? Desinstale e apague. O que não existe não pode ser hackeado.
Conclusão
No fim das contas, garantir a segurança de uma aplicação web não é sobre construir fortalezas impenetráveis, até porque a segurança 100% é uma ilusão. É sobre fazer o básico bem feito. Elevar um pouquinho a régua de dificuldade afasta 99% dos curiosos e atacantes automatizados, mantendo o seu projeto — e o seu sono — protegidos.