Práticas de Codificação Segura
Estrutura de Segurança de Credenciais
graph TD
A[Práticas de Codificação Segura] --> B[Validação de Entrada]
A --> C[Configuração Segura]
A --> D[Revisão de Código]
A --> E[Análise Estática]
A --> F[Gerenciamento de Dependências]
1. Validação e Sanitização de Entrada
Prevenção da Exposição de Credenciais
## Exemplo Inseguro
def authenticate(username, password):
## Perigoso: Concatenação direta de strings
query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"
## Exemplo Seguro
def secure_authenticate(username, password):
## Utilize consultas parametrizadas
cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s",
(username, hash_password(password)))
2. Gerenciamento de Configuração Segura
Configuração Baseada em Ambiente
## Ubuntu 22.04 - Exemplo de Configuração Segura
## Utilize arquivos .env com permissões restritas
touch .env
chmod 600 .env
## Conteúdo do arquivo .env
DB_USERNAME=secure_user
DB_PASSWORD=complex_password_here
API_KEY=chave_criptografada
3. Melhores Práticas de Manipulação de Credenciais
| Prática |
Descrição |
Recomendação |
| Sem Codificação |
Evite incorporar credenciais |
Utilize variáveis de ambiente |
| Criptografia |
Proteja dados sensíveis |
Utilize métodos de criptografia fortes |
| Exposição Mínima |
Limite a visibilidade de credenciais |
Utilize tokens de curta duração |
4. Varredura de Segurança Automatizada
Ferramentas de Análise de Código Estático
## Instale e execute ferramentas de varredura de segurança
sudo apt-get update
sudo apt-get install -y python3-pip
## Instale ferramentas de varredura de segurança
pip3 install bandit safety
## Execute a varredura de segurança no projeto
bandit -r /path/to/your/project
safety check
5. Segurança de Dependências
Gerenciamento de Riscos de Terceiros
## Verifique e atualize dependências
pip3 install pip-audit
## Audite dependências Python
pip-audit
## Atualize pacotes vulneráveis
pip3 list --outdated
pip3 install --upgrade package_name
6. Práticas de Log Secure
## Exemplo de Log Seguro
import logging
import re
def sanitize_log_message(message):
## Remova informações sensíveis
return re.sub(r'(password|secret|token)=\S+', r'\1=***', message)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def log_authentication_attempt(username):
## Evite registrar detalhes sensíveis
logger.info(f"Tentativa de autenticação para usuário: {username}")
7. Lista de Verificação de Revisão de Código
graph LR
A[Revisão de Código] --> B{Verificações de Credenciais}
B --> |Aprovado| C[Aprovar]
B --> |Reprovado| D[Rejeitar]
Pontos Principais de Revisão
- Sem credenciais codificadas
- Validação de entrada adequada
- Manipulação segura de erros
- Princípios de privilégios mínimos
Recomendações Práticas
Na LabEx, enfatizamos:
- Educação contínua em segurança
- Auditorias de segurança regulares
- Detecção automatizada de vulnerabilidades
- Implementação de estratégias de segurança multicamadas