OWASP Top 10 Explicado com Exemplos Práticos

Security2026-10-24TryQuickToolBox

Você construiu uma aplicação web e agora está preocupado com a segurança. O OWASP Top 10 é a lista de referência dos riscos críticos de segurança em aplicações web. Mas ler a lista é uma coisa; entender como esses riscos se manifestam no código real é outra. Este artigo percorre cada categoria do OWASP Top 10 com exemplos práticos e passos concretos para mitigá-los.

1. Controle de Acesso Quebrado

O controle de acesso quebrado ocorre quando os usuários podem agir fora de suas permissões pretendidas. Por exemplo, um usuário pode acessar a conta de outro usuário alterando um parâmetro de URL.

// Vulnerável: Nenhuma verificação se o ID do usuário solicitado pertence ao usuário autenticado
app.get('/api/user/:id', (req, res) => {
  const user = getUserById(req.params.id);
  res.json(user);
});

Mitigação: Aplique verificações de controle de acesso no lado do servidor. Use controle de acesso baseado em funções ou atributos e negue por padrão.

2. Falhas Criptográficas

Dados sensíveis como senhas e números de cartão de crédito devem ser criptografados em trânsito e em repouso. Usar algoritmos fracos ou embutir segredos no código são armadilhas comuns.

# Vulnerável: Usando MD5 para hash de senha
import hashlib
hash = hashlib.md5(password.encode()).hexdigest()

Mitigação: Use algoritmos de hash fortes e com salt, como bcrypt ou Argon2. Sempre use HTTPS (TLS) para dados em trânsito.

3. Injeção

Falhas de injeção, como injeção de SQL, ocorrem quando dados não confiáveis são enviados a um interpretador como parte de um comando ou consulta.

// Vulnerável: Concatenação de strings na consulta SQL
$sql = "SELECT * FROM users WHERE username = '" . $_GET['username'] . "'";

Mitigação: Use consultas parametrizadas ou instruções preparadas. Nunca concatene a entrada do usuário diretamente nas consultas.

4. Design Inseguro

Design inseguro refere-se a controles de design ausentes ou ineficazes. Por exemplo, um sistema de recuperação de senha que revela se um e-mail existe pode ajudar os atacantes.

Mitigação: Modelagem de ameaças durante o design, use padrões de design seguros e implemente limitação de taxa e outros controles.

5. Configuração de Segurança Incorreta

Isso inclui deixar contas padrão habilitadas, exibir rastreamentos de pilha para os usuários ou configurar incorretamente as permissões de armazenamento em nuvem.

# Vulnerável: Modo de depuração habilitado em produção
DEBUG = True

Mitigação: Reforce as configurações, remova recursos não utilizados e automatize as verificações de configuração.

6. Componentes Vulneráveis e Desatualizados

Usar bibliotecas com vulnerabilidades conhecidas é como deixar uma porta aberta. Por exemplo, uma versão desatualizada de uma biblioteca popular pode ter uma falha de execução remota de código.

Mitigação: Atualize regularmente as dependências, use ferramentas como OWASP Dependency-Check e monitore CVEs.

7. Falhas de Identificação e Autenticação

Autenticação fraca permite que atacantes adivinhem senhas ou sequestrem sessões.

// Vulnerável: Sem bloqueio de conta após tentativas falhas
if (passwordMatches) {
  loginUser();
} else {
  // apenas mostra erro, sem limitação de taxa
}

Mitigação: Implemente autenticação multifator, aplique políticas de senha fortes e use gerenciamento de sessão seguro.

8. Falhas de Integridade de Software e Dados

Esta categoria inclui o uso de fontes não confiáveis para atualizações de software ou desserialização de dados não confiáveis.

// Vulnerável: Desserializando dados não confiáveis
$data = unserialize($_POST['data']);

Mitigação: Verifique assinaturas digitais, use verificações de integridade e evite desserializar dados não confiáveis.

9. Falhas de Registro e Monitoramento de Segurança

Sem o registro adequado, as violações passam despercebidas. Por exemplo, não registrar tentativas de login falhas.

Mitigação: Registre eventos relevantes para a segurança, configure alertas e tenha um plano de resposta a incidentes.

10. Falsificação de Solicitação do Lado do Servidor (SSRF)

SSRF ocorre quando um atacante pode fazer o servidor enviar solicitações para locais não intencionais.

// Vulnerável: Buscando URL da entrada do usuário sem validação
fetch(req.query.url).then(...)

Mitigação: Valide e sanitize URLs, use listas de permissões e restrinja as permissões do servidor.

Tabela Comparativa

RiscoExemploMitigação
Controle de Acesso QuebradoAcessar dados de outros usuários via manipulação de URLAplicar verificações de acesso no lado do servidor
Falhas CriptográficasArmazenar senhas em texto simplesUse hash forte e TLS
InjeçãoInjeção de SQL via entrada não sanitizadaConsultas parametrizadas
Design InseguroRecuperação de senha revela existência de e-mailModelagem de ameaças e padrões seguros
Configuração de Segurança IncorretaModo de depuração ativado em produçãoReforce as configurações
Componentes VulneráveisBiblioteca desatualizada com CVE conhecidaAtualizações regulares e verificação de dependências
Falhas de AutenticaçãoSem limitação de taxa no loginMFA e políticas fortes
Falhas de IntegridadeDesserialização de dados não confiáveisVerifique assinaturas e evite desserialização insegura
Falhas de RegistroSem logs para logins falhosImplemente registro e monitoramento
SSRFBuscando URL fornecida pelo usuárioValide e permita apenas URLs confiáveis

Perguntas Frequentes

O que é o OWASP Top 10?

O OWASP Top 10 é uma lista atualizada regularmente dos riscos de segurança mais críticos em aplicações web, publicada pelo Open Web Application Security Project (OWASP).

Com que frequência o OWASP Top 10 é atualizado?

Ele é atualizado periodicamente para refletir ameaças emergentes e mudanças na tecnologia. A última grande atualização foi em 2021.

O OWASP Top 10 é suficiente para a segurança?

Não, é um ponto de partida. Um programa de segurança abrangente inclui práticas de codificação segura, testes regulares e monitoramento contínuo.

Para proteger ainda mais suas aplicações, considere usar ferramentas como o Analisador de Logs Nginx para monitorar e detectar atividades suspeitas nos logs do seu servidor.