Desarrollo seguro de IA
Complete developer guide to building secure AI applications - from input validation to deployment
Updated: August 2026
Principios de seguridad
. Defensa en profundidad
Implement multiple layers of security controls. No single control should be relied upon exclusively.
. Mínimo privilegio
otorgar permisos mínimos necesarios a los usuarios, API y componentes de IA.
. Fallo seguro
Cuando se producen errores, se utilizan de forma predeterminada estados seguros en lugar de permisivos.
. Confianza cero
Never trust, always verify. Validate at every boundary, including internal systems.
Validación 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.
Clase de validación 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 verificación de validación
- alidar en el límite de la aplicación
- diablos longitud de entrada
- partido alternativo para inyección
- detectar intentos de codificación
- validación de tipo
- anitizar antes de procesar
- fallos de validación
- comió limitando
Manejo de salida
LLM outputs must be validated and sanitized before being presented to users or passed to other systems.
Filtrado de contenidos
- Diablos para la exposición de datos confidenciales.
- verificar que no se hayan filtrado mensajes del sistema
- alidar formato de salida
- diablos por contenido inyectado
II Detección
- puede para información personal
- preguntar o redactar datos confidenciales
- og intentos de exposición de PII
- notificación de servicio cuando se detecta
Validación de formato
- alidar salidas JSON
- diablos estructura esperada
- verificar los valores permitidos
- anitizar HTML si corresponde
Ejemplo de controlador de salida
```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
```
Seguridad PI
autenticación
- Se sólida gestión de claves API.
- Implementar OAuth 2.0 siempre que sea posible.
- Validación de token WT
- Rotación de clave PI
autorización
- control de acceso basado en ole (RBAC)
- Alcance de la clave PI
- límites de tasa de usuario
- aislamiento enant
comió limitante
- límites basados en OKEN
- límites basados en equest
- controles principales
- estrangulamiento encendido
Lista de verificación de seguridad de PI
- solo HTTPS
- limitar la tasa de implementación
- validar todas las entradas
- anitizar todas las salidas
- se claves API, no integradas
- implementar la firma de la solicitud
- Acceso a API
- implementar CORS correctamente
autenticación y autorización
autenticación de servidor
- políticas de contraseña fuertes
- apoyo de la FA
- gestión de sesiones
- vencimiento correcto
Autenticación PI
- Gestión de claves PI
- Ámbitos de autenticación
- validación peso
- rotación de ojos
autorización
- implementación de BAC
- controles de emisiones
- acceso a nivel de recursos electrónicos
- registro de auditoría
seguridad de datos
Clasificación de datos
- identificar datos sensibles
- categorizar por sensibilidad
- aplicar controles por categoría
- auditorías periódicas
cifrado
- LS en tránsito
- ES en reposo
- gestión de ojos
- rotación de ojos
Manejo
- eteccion
- inimización
- gestión de consentimiento
- derecho a la eliminación
Registro y monitoreo
sombrero para iniciar sesión
Eventos de seguridad
- intentos de autenticación
- fallas de autorización
- límite de comida excedido
- patrones sospechosos
Eventos específicos
- intentos de inyección divertidos
- acceso rápido al sistema
- invocaciones geniales
- acceso a datos a través de IA
Eventos operativos
- llamadas PI
- Errores y excepciones.
- métricas de rendimiento
- seguimiento de la mayoría
Monitoreo de Mejores Prácticas
- alertas en tiempo real para eventos de seguridad
- tablero para métricas de seguridad
- detección automatizada de anomalías
- Integración con SIEM
- revisión regular de registros
- políticas de retención
Vulnerabilidades comunes
. IDOR en funciones de IA
Referencia directa a objetos segura cuando la IA accede a recursos
ejemplo
User asks AI to "read file X" and AI has access without proper authorization checks.
. SSRF vía LLM
Falsificación de solicitudes del lado del servidor a través de llamadas a herramientas de IA
ejemplo
rompt engaña a la IA para que realice solicitudes a servicios internos.
. Omisión de autenticación
Autenticación débil o faltante para puntos finales de IA
ejemplo
Puntos finales de API sin comprobaciones de autenticación adecuadas.
. Exposición a la base de datos vectorial
Base de datos vectorial no protegida con incrustaciones sensibles.
ejemplo
Base de datos vectorial de acceso público con datos confidenciales integrados.
cumplimiento
GDPR (EU)
- horrible base para el procesamiento
- minimización de datos
- derecho de acceso/eliminación
- portabilidad de datos
CCPA (California)
- derecho a saber
- derecho a eliminar
- derecho a optar por no participar
- sobre discriminación
I-específico
- Requisitos de la Ley U AI
- Yo evaluaciones de riesgo
- obligaciones de transparencia
- supervisión humana