Cybersecurity

Os principais erros de segurança que devs ainda cometem em 2025

Os principais erros de segurança que devs ainda cometem em 2025 Os principais erros de segurança que devs ainda cometem em 2025 Entramos em 2025, uma era de inteligência...

Marcos Costa
Marcos Costa
01 de novembro de 2025 5 min de leitura
Os principais erros de segurança que devs ainda cometem em 2025

Os principais erros de segurança que devs ainda cometem em 2025

Os principais erros de segurança que devs ainda cometem em 2025

Entramos em 2025, uma era de inteligência artificial generativa, computação quântica no horizonte e arquiteturas cada vez mais complexas. No entanto, apesar de todo o avanço tecnológico, muitos desenvolvedores continuam a tropeçar nos mesmos obstáculos de segurança que assombram a indústria há anos. A verdade é que as ferramentas evoluem, mas os princípios fundamentais de segurança permanecem, e ignorá-los pode custar caro.

Neste artigo, vamos mergulhar fundo e explorar os principais erros de segurança que devs ainda cometem em 2025, mostrando como práticas simples podem fortalecer drasticamente suas aplicações.

1. Injeção de SQL (SQLi): O Clássico que se Recusa a Morrer

Parece inacreditável, mas a Injeção de SQL, uma vulnerabilidade documentada há mais de duas décadas, ainda lidera o ranking de ataques bem-sucedidos. O erro acontece quando a entrada do usuário é concatenada diretamente em uma consulta SQL, permitindo que um invasor manipule a lógica do banco de dados.

O Erro Comum

Imagine um endpoint de login em Node.js. O código vulnerável se parece com isto:


const user = req.body.username;
const pass = req.body.password;
const query = `SELECT * FROM users WHERE username = '${user}' AND password = '${pass}'`;

// Executa a query...

Um invasor poderia inserir ' OR '1'='1 no campo de usuário, e a consulta se tornaria um passe livre para o sistema.

A Solução Correta

Use Prepared Statements (ou consultas parametrizadas). A biblioteca do seu banco de dados quase certamente oferece essa funcionalidade. O banco de dados compila o template da query separadamente dos dados, tratando qualquer entrada do usuário como um valor literal, e não como código executável.


const user = req.body.username;
const pass = req.body.password;
const query = 'SELECT * FROM users WHERE username = ? AND password = ?';

// Executa a query passando os parâmetros de forma segura
db.execute(query, [user, pass]);

2. Credenciais e Chaves “Hardcoded” no Código

Com a popularização do Git e de repositórios públicos, deixar chaves de API, senhas de banco de dados ou tokens de acesso diretamente no código-fonte é um convite ao desastre. Bots maliciosos varrem plataformas como o GitHub em busca dessas credenciais expostas.

Exemplo Perigoso

Um arquivo de configuração ou uma constante no código:


// config.js
const AWS_CONFIG = {
  accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
  secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
  region: 'us-east-1'
};

module.exports = AWS_CONFIG;

A Prática Segura

Utilize variáveis de ambiente. Armazene informações sensíveis em um arquivo .env (que deve estar no seu .gitignore) em desenvolvimento e use os sistemas de gerenciamento de segredos do seu provedor de nuvem (como AWS Secrets Manager ou Azure Key Vault) em produção.


// Acesso seguro via variáveis de ambiente
const AWS_CONFIG = {
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  region: process.env.AWS_REGION
};

3. Ignorar Vulnerabilidades em Dependências de Terceiros

Ninguém constrói software do zero hoje em dia. Usamos pacotes, bibliotecas e frameworks para acelerar o desenvolvimento. O problema? Cada uma dessas dependências é uma potencial porta de entrada para vulnerabilidades. O caso Log4Shell, que abalou a internet, foi um lembrete doloroso disso.

Continuar usando uma biblioteca com uma vulnerabilidade crítica conhecida (CVE) é um dos erros de segurança mais comuns e perigosos que os desenvolvedores cometem.

Como se Proteger?

  • Auditoria Regular: Use ferramentas como npm audit, pip-audit ou Snyk para escanear suas dependências em busca de vulnerabilidades conhecidas.
  • Automação: Integre essas varreduras ao seu pipeline de CI/CD. Ferramentas como o Dependabot do GitHub podem automatizar a criação de Pull Requests para atualizar pacotes vulneráveis.
  • Mantenha-se Atualizado: Atualize suas dependências de forma proativa. Não espere uma vulnerabilidade ser descoberta para agir.

4. Cross-Site Scripting (XSS): Permitindo a Execução de Scripts Maliciosos

O XSS ocorre quando uma aplicação inclui dados não confiáveis em uma página web sem a devida validação ou “escape”. Isso permite que um invasor execute scripts maliciosos no navegador da vítima, podendo roubar cookies de sessão, desfigurar sites ou redirecionar o usuário para páginas maliciosas.

O Cenário de Risco

Imagine uma seção de comentários onde o texto do usuário é renderizado diretamente no HTML:


// Frontend em JavaScript, recebendo um comentário de uma API
const commentDiv = document.getElementById('latest-comment');
commentDiv.innerHTML = userInput.comment; // Perigoso!

Se userInput.comment contiver <script>alert('XSS');</script>, o script será executado no navegador de qualquer um que visualize a página.

Prevenção

A regra de ouro é: nunca confie na entrada do usuário. Faça o “escape” de todo conteúdo gerado pelo usuário antes de renderizá-lo. Na prática, use funções e frameworks que façam isso por padrão.


// Forma segura
const commentDiv = document.getElementById('latest-comment');
commentDiv.textContent = userInput.comment; // Seguro!

.textContent trata a entrada como texto puro, e não como HTML, neutralizando a ameaça.

Conclusão: Segurança é um Processo Contínuo

Evitar os principais erros de segurança que devs ainda cometem em 2025 não requer genialidade, mas sim disciplina e atenção. A segurança não é um produto que se entrega uma única vez, mas um processo contínuo e uma mentalidade a ser cultivada.

Adote práticas de desenvolvimento seguro (secure coding), automatize as verificações de segurança em seu fluxo de trabalho e, acima de tudo, nunca pare de aprender. O cenário de ameaças está sempre evoluindo, e nossa defesa também precisa evoluir.

Marcos Costa

Sobre Marcos Costa

Desenvolvedor backend com foco em arquitetura de software, automação e produtos digitais.

Ver mais artigos