Técnicas de Mitigação
Estratégias de Validação Abrangente de Entrada
1. Técnicas de Sanitização de Entrada
graph TD
A[Entrada do Utilizador] --> B{Processo de Validação}
B --> |Sanitizar| C[Entrada Limpa]
B --> |Rejeitar| D[Bloquear Entrada Maliciosa]
Exemplo de Sanitização em Python
import re
def sanitize_input(user_input):
## Remover caracteres especiais
sanitized = re.sub(r'[<>&;()]', '', user_input)
## Limitar o comprimento da entrada
return sanitized[:50]
## Utilização
safe_input = sanitize_input("user_input_with_special_chars!")
2. Métodos de Validação de Entrada
| Tipo de Validação |
Descrição |
Exemplo |
| Validação de Comprimento |
Restringir o comprimento da entrada |
Máximo de 50 caracteres |
| Validação de Tipo |
Garantir o tipo de dados correto |
Apenas inteiros |
| Validação de Padrão |
Corresponder a padrões regex específicos |
Formato de email |
Técnicas de Proteção Avançadas
3. Consultas Parametrizadas
import sqlite3
def secure_database_query(username):
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
## A consulta parametrizada previne injeções SQL
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
return cursor.fetchall()
4. Codificação de Entrada
## Exemplo de Codificação de URL
python3 -c "import urllib.parse; print(urllib.parse.quote('<script>alert(1)</script>'))"
Frameworks e Bibliotecas de Segurança
5. Ferramentas de Proteção Recomendadas
graph LR
A[Bibliotecas de Segurança] --> B[OWASP ESAPI]
A --> C[input-validation npm]
A --> D[Python Bleach]
6. Proteção de Nível de Sistema
## Configuração do Firewall UFW
sudo ufw enable
sudo ufw deny from 192.168.1.100
sudo ufw logging on
Lista de Verificação de Mitigação Prática
- Implementar validação de lista branca
- Utilizar instruções preparadas
- Sanitizar e escapar entradas
- Implementar verificação de tipo rigorosa
- Utilizar bibliotecas de segurança
Exemplo de Validação de Nível de Código
def robust_input_validation(user_input):
## Múltiplas camadas de validação
if not user_input:
raise ValueError("Entrada vazia")
## Verificação de comprimento
if len(user_input) > 100:
raise ValueError("Entrada demasiado longa")
## Validação de padrão regex
import re
if not re.match(r'^[a-zA-Z0-9_]+$', user_input):
raise ValueError("Caracteres inválidos")
return user_input
## Utilização
try:
validated_input = robust_input_validation("user123")
except ValueError as e:
print(f"Erro de Validação: {e}")
Princípios Principais de Mitigação
- Nunca confiar em entradas do utilizador
- Validar em múltiplas camadas
- Utilizar bibliotecas de segurança incorporadas
- Implementar acesso com privilégios mínimos
Na LabEx, enfatizamos uma abordagem multicamadas para validação de entrada e segurança.