· 3 min read
Análise de Vulnerabilidades Comuns em Aplicações Web
Aplicações web são alvos constantes de ataques. Segundo o OWASP Top 10, 94% das falhas estão relacionadas a vulnerabilidades conhecidas e evitáveis. Neste post, exploramos as falhas mais críticas, exemplos reais e práticas para mitigá-las.
1. SQL Injection (SQLi)
O que é?
Uma vulnerabilidade que permite injetar código SQL malicioso em consultas de banco de dados, geralmente via campos de entrada não validados.
Exemplo Técnico
-- Código vulnerável (PHP)
$user = $_GET['username'];
$query = "SELECT * FROM users WHERE username = '$user'";
-- Ataque: Inserir ' OR '1'='1'--
-- Consulta resultante:
SELECT * FROM users WHERE username = '' OR '1'='1'--'
Isso retorna todos os usuários!
📈 Caso Real:
Em 2012, o Sony Pictures sofreu um ataque via SQLi, expondo dados de 1 milhão de usuários.
Prevenção
Use consultas parametrizadas (Prepared Statements):
# Exemplo em Python (SQLAlchemy)
stmt = text("SELECT * FROM users WHERE username = :user")
result = db.execute(stmt, {"user": user_input})
- Valide e sanitize entradas (regex, whitelist).
- Adote ORMs (Hibernate, Entity Framework).
2. Cross-Site Scripting (XSS)
O que é?
Ataques onde scripts maliciosos são injetados em páginas web, executados no navegador da vítima.
Tipos de XSS
Tipo | Descrição |
---|---|
Stored | Script armazenado no servidor (ex: comentários). |
Reflected | Script refletido via URL (ex: phishing). |
<!-- Exemplo de XSS Refletido -->
<input type="text" value="<?php echo $_GET['search']; ?>">
<!-- Ataque: ?search=<script>alert('Hacked')</script> -->
📈 Caso Real:
O worm Samy (MySpace, 2005) usou XSS para se autorreplicar, afetando 1 milhão de perfis em horas.
Prevenção
Escape dados dinâmicos:
<!-- Usar funções de escape (ex: PHP htmlspecialchars) -->
<input value="<?= htmlspecialchars($_GET['search']) ?>">
- Implemente Content Security Policy (CSP):
Content-Security-Policy: default-src 'self'
- Use frameworks modernos (React, Angular) que escapam automaticamente.
3. Cross-Site Request Forgery (CSRF)
O que é?
Ataque que engana usuários para executar ações não intencionais em aplicações autenticadas.
Exemplo de Ataque
<!-- Site malicioso -->
<img src="https://banco.com/transfer?dest=123&valor=10000" width="0" height="0">
Se o usuário estiver logado, a transferência é executada!
📈 Caso Real:
Em 2018, o Netflix teve uma vulnerabilidade CSRF que permitia adicionar dispositivos à conta sem consentimento.
Prevenção
Use tokens anti-CSRF:
<form action="/transfer" method="POST">
<input type="hidden" name="csrf_token" value="RANDOM_STRING">
</form>
- Configure cookies com
SameSite=Strict
.
4. Insecure Direct Object References (IDOR)
O que é?
Acesso não autorizado a recursos manipulando identificadores (IDs) em URLs ou parâmetros.
Exemplo
GET /api/user/123/dados
Alterar para /api/user/456/dados (sem validação de permissão)
Prevenção
- Implemente controle de acesso baseado em roles (RBAC).
- Use UUIDs ou hashes em vez de IDs sequenciais.
5. Security Misconfigurations
O que é?
Configurações inadequadas em servidores, APIs ou serviços (ex: credenciais padrão, debug habilitado).
📈 Caso Real:
O breach da Equifax (2017) ocorreu devido a um servidor Apache não atualizado.
Prevenção
- Remova serviços desnecessários.
- Use ferramentas como OWASP ZAP para scan contínuo.
✅ Checklist de Desenvolvimento Seguro
✔ Valide todas as entradas do usuário.
✔ Use HTTPS e HSTS.
✔ Atualize dependências regularmente (npm audit
).
✔ Revise permissões de arquivos (ex: .env
não versionado).
✔ Teste com ferramentas como Burp Suite e SQLMap.
📚 Recursos Recomendados
📖 Livro: The Web Application Hacker’s Handbook
🎓 Curso: OWASP Top 10 na Udemy
🛠 Ferramentas: PortSwigger Academy
🔐 Proteger aplicações web é uma jornada contínua. Comece hoje!