Skip to content
NeuralSkills
Seguridad

Disenador de Validacion de Entrada

Disena validacion de entrada integral — validacion por esquema, sanitizacion, coercion de tipos y pruebas de limites para cada input de usuario.

Intermedio Gratis Publicado: 15 de abril de 2026
Herramientas Compatibles claude-codechatgptgeminicopilotcursorwindsurfuniversal

El Problema

Toda vulnerabilidad de seguridad comienza con input no confiable. Inyeccion SQL, XSS, inyeccion de comandos, path traversal — todos explotan la brecha entre lo que esperas que los usuarios envien y lo que los atacantes realmente envian. Validacion dispersa en controllers con checks regex ad-hoc es fragil e inconsistente. Necesitas una estrategia de validacion centralizada basada en esquemas que rechace input malicioso en la frontera antes de que alcance tu logica de negocio.

El Prompt

Eres un arquitecto de validacion de entrada. Disena una estrategia de validacion integral para los inputs de usuario de mi aplicacion.

FRAMEWORK: [ej. Express + Zod, FastAPI + Pydantic, Spring Boot, Next.js]
FUENTES DE INPUT: [ej. campos de formulario, parametros URL, query strings, body JSON, carga de archivos, headers]

ENDPOINTS/FORMULARIOS A VALIDAR:
[lista tus endpoints con sus campos de entrada esperados y tipos]

Para cada campo de entrada, disenar validacion cubriendo:

1. **Validacion de tipo**: Tipo esperado, modo estricto (sin coercion)
2. **Restricciones de longitud/rango**: Longitud min/max, rangos numericos
3. **Validacion de formato**: Email, URL, telefono, fecha — con regex o libreria
4. **Allowlist/Denylist**: Valores enum, patrones bloqueados
5. **Sanitizacion**: Encoding HTML, trim, normalizar unicode
6. **Reglas de negocio**: Validacion cruzada entre campos, requisitos condicionales
7. **Mensajes de error**: Mensajes amigables que no expongan detalles internos

Tambien verificar:
- Se validan todos los parametros de query, no solo campos del body?
- Se validan parametros de ruta URL por tipo y formato?
- Se validan cargas de archivos por tipo, tamano y contenido?
- Hay proteccion contra prototype pollution en el parsing JSON?
- Estan los arrays y objetos anidados limitados en tamano?

Proporcionar un esquema de validacion completo usando la libreria de validacion de mi framework.

Ejemplo de Salida

## Esquema de Validacion: POST /api/users

const createUserSchema = z.object({
  email: z.string().email().max(254).trim().toLowerCase(),
  password: z.string().min(12).max(128),
  name: z.string().min(1).max(100).trim().regex(/^[a-zA-Z\s'-]+$/),
  age: z.number().int().min(13).max(150).optional(),
  role: z.enum(['user', 'editor']),  // nunca permitir 'admin' desde el cliente
});

### Notas de Seguridad:
- name: Regex previene inyeccion de scripts via caracteres especiales
- role: Enum previene escalacion de privilegios via valores arbitrarios
- password: Longitud maxima previene DoS en bcrypt (limite de 72 bytes)

Cuando Usar

Disenar esquemas de validacion al inicio de cada nuevo endpoint de API o formulario. Revisar al agregar nuevos campos de entrada, cambiar formatos de datos o despues de descubrir bugs de bypass de validacion. Esencial durante auditorias de seguridad y antes de cualquier endpoint que procese datos financieros, personales o de autenticacion.

Tips Pro

  • Valida en la frontera — valida el input en el momento que entra a tu sistema, antes de que cualquier logica de negocio lo procese. Validacion a nivel de controller, no de servicio.
  • Allowlist sobre denylist — define lo que SI esta permitido en lugar de intentar bloquear lo que no. Las denylists siempre se pierden casos borde.
  • No confies en Content-Type — un atacante puede enviar un body JSON con Content-Type: text/plain. Valida el contenido real, no el header.
  • Limita todo — establece longitudes maximas en strings, conteos maximos en arrays y profundidad maxima en objetos anidados para prevenir DoS via tamano de payload.