Desenvolvimento seguro de IA
Complete developer guide to building secure AI applications - from input validation to deployment
Updated: August 2026
Princípios de segurança
1. Defesa em profundidade
Implement multiple layers of security controls. No single control should be relied upon exclusively.
2. Privilégio mínimo
Conceder permissões mínimas necessárias para usuários, APIs e componentes de IA.
3. Fail Secure
Quando ocorrem erros, o padrão é usar estados seguros em vez de estados permissivos.
4. Zero Trust
Never trust, always verify. Validate at every boundary, including internal systems.
Validação de entrada
All user input must be validated and sanitized before processing. This is your first line of defense against prompt injection and other attacks.
Classe de validação de entrada
```python
import re
from typing import Optional, List
class InputValidator:
# Known injection patterns
INJECTION_PATTERNS = [
r"ignore\s+(previous|prior|all)\s+(instructions|rules)",
r"(forget|disregard)\s+(your|all)\s+(instructions|rules)",
r"you\s+are\s+(now|still)\s+(dan|do\s+anything)",
r"system\s+prompt:",
r"{{.*}}",
r"\[INST\]|\[/INST\]|<\|end\|>",
]
# Encoding patterns
ENCODING_PATTERNS = [
r"base64:", # Base64 prefix
r"\\x[0-9a-fA-F]{2}", # Hex encoding
r"%[0-9a-fA-F]{2}", # URL encoding
]
def validate(self, user_input: str) -> dict:
"""Validate user input for potential attacks."""
issues = []
# Length check
if len(user_input) > 10000:
issues.append("Input exceeds maximum length")
# Check for injection patterns
for pattern in self.INJECTION_PATTERNS:
if re.search(pattern, user_input, re.IGNORECASE):
issues.append(f"Suspicious pattern detected: {pattern}")
# Check for encoding attempts
for pattern in self.ENCODED_PATTERNS:
if re.search(pattern, user_input):
issues.append(f"Encoded content detected")
# Check for high entropy (possible encoding)
unique_chars = len(set(user_input))
if len(user_input) > 50 and unique_chars / len(user_input) < 0.3:
issues.append("High entropy detected - possible encoding")
return {
"valid": len(issues) == 0,
"issues": issues,
"sanitized": self._sanitize(user_input)
}
def _sanitize(self, user_input: str) -> str:
"""Basic sanitization."""
# Remove control characters
sanitized = re.sub(r'[\x00-\x1F\x7F]', '', user_input)
return sanitized.strip()
```
Lista de verificação de validação
- Validar no limite do aplicativo
- Verificar comprimento de entrada
- Correspondência de padrão para injeção
- Detectar tentativas de codificação
- Validação de tipo
- Higienização antes do processamento
- Falhas de validação de log
- Limitação de taxa
Manipulação de saída
LLM outputs must be validated and sanitized before being presented to users or passed to other systems.
Filtragem de conteúdo
- Verifique a exposição de dados confidenciais
- Verifique se nenhum prompt do sistema vazou
- Validar formato de saída
- Verificar conteúdo injetado
Detecção de PII
- Verificar informações pessoais
- Mascarar ou ocultar dados confidenciais
- Registrar tentativas de exposição de PII
- Notificação do usuário quando detectada
Validação de formato
- Validar saídas JSON
- Verificar a estrutura esperada
- Verificar valores permitidos
- Limpar HTML se aplicável
Exemplo de manipulador de saída
```python
import re
import json
class OutputHandler:
PII_PATTERNS = {
"ssn": r"\b\d{3}-\d{2}-\d{4}\b",
"email": r"\b[\w.-]+@[\w.-]+\.\w+\b",
"phone": r"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b",
}
def process_output(self, raw_output: str) -> dict:
"""Process and validate LLM output."""
result = {
"original": raw_output,
"cleaned": raw_output,
"warnings": [],
"blocked": False
}
# Check for system prompt leakage
if "system prompt" in raw_output.lower():
result["warnings"].append("System prompt reference detected")
# Scan for PII
for pii_type, pattern in self.PII_PATTERNS.items():
matches = re.findall(pattern, raw_output)
if matches:
result["warnings"].append(f"{pii_type} detected in output")
# Optionally mask
result["cleaned"] = re.sub(pattern, "[REDACTED]", result["cleaned"])
return result
```
Segurança de API
Autenticação
- Use um gerenciamento forte de chaves de API
- Implementar OAuth 2.0 sempre que possível
- Validação de token JWT
- Rotação de chaves de API
Autorização
- Controle de acesso baseado em função (RBAC)
- Escopo da chave de API
- Limites de taxa por usuário
- Isolamento de locatário
Limitação de taxa
- Limites baseados em tokens
- Limites baseados em solicitações
- Controles de custos
- Tiered throttling
Lista de verificação de segurança de API
- Use apenas HTTPS
- Implementar limitação de taxa
- Validar todas as entradas
- Higienizar todas as saídas
- Use chaves de API, não incorporadas
- Implementar assinatura de solicitação
- Log API access
- Implementar CORS corretamente
Autenticação e autorização
Autenticação do usuário
- Políticas de senha fortes
- Suporte MFA
- Gerenciamento de sessão
- Expiração de token
Autenticação de API
- Gerenciamento de chaves de API
- Escopos OAuth
- Validação JWT
- Rotação de chave
Autorização
- Implementação RBAC
- Verificações de permissão
- Acesso em nível de recurso
- Registro de auditoria
Segurança de dados
Classificação de dados
- Identificar dados confidenciais
- Categorizar por sensibilidade
- Aplicar controles por categoria
- Auditorias regulares
Criptografia
- TLS em trânsito
- AES em repouso
- Gerenciamento de chaves
- Rotação de chave
Manipulação de PII
- Detecção
- Minimização
- Gerenciamento de consentimento
- Direito de exclusão
Registro e monitoramento
O que registrar
Eventos de segurança
- Tentativas de autenticação
- Falhas de autorização
- Limite de taxa excedido
- Padrões suspeitos
Eventos específicos de IA
- Tentativas de injeção imediata
- Acesso imediato ao sistema
- Invocações de ferramentas
- Acesso a dados via IA
Eventos operacionais
- Chamadas de API
- Erros e exceções
- Métricas de desempenho
- Rastreamento de custos
Práticas recomendadas de monitoramento
- Alertas em tempo real para eventos de segurança
- Painel para métricas de segurança
- Detecção automatizada de anomalias
- Integração com SIEM
- Revisão regular do log
- Políticas de retenção
Vulnerabilidades comuns
1. IDOR em recursos de IA
Referência de objeto direto inseguro quando a IA acessa recursos
Exemplo
User asks AI to "read file X" and AI has access without proper authorization checks.
2. SSRF via LLM
Falsificação de solicitação do lado do servidor por meio de chamadas de ferramenta de IA
Exemplo
O prompt engana a IA para fazer solicitações a serviços internos.
3. Ignorar autenticação
Autenticação fraca ou ausente para endpoints de IA
Exemplo
Endpoints da API de IA sem verificações de autenticação adequadas.
4. Exposição ao banco de dados vetorial
Banco de dados de vetores desprotegidos com incorporações sensíveis
Exemplo
BD de vetor de acesso público com dados confidenciais incorporados.
Conformidade
GDPR (EU)
- Base legal para processamento
- Minimização de dados
- Direito de acesso/exclusão
- Portabilidade de dados
CCPA (California)
- Direito de saber
- Direito de exclusão
- Direito de cancelamento
- Não discriminação
Específico de IA
- Requisitos da Lei de IA da UE
- Avaliações de risco de IA
- Obrigações de transparência
- Supervisão humana