input_size_validation
SKILL.md
input_size_validation
Sin límite de tamaño, un atacante puede enviar archivos de cientos de MB para saturar la memoria de los workers o el almacenamiento de MinIO. La validación de tamaño ocurre en dos capas: Nginx (antes de que el payload llegue a FastAPI) y FastAPI (validación de tipo y dimensiones de imagen).
When to use
Aplicar en Nginx como primera línea y en el endpoint de FastAPI que recibe las imágenes. Rechazar con 413 antes de leer el body completo.
Instructions
- En Nginx:
client_max_body_size 20M;— rechaza con 413 sin pasar al upstream. - En FastAPI, validar el campo
UploadFile:MAX_IMAGE_SIZE = 10 * 1024 * 1024 # 10 MB por imagen async def validate_image(file: UploadFile): content = await file.read(MAX_IMAGE_SIZE + 1) if len(content) > MAX_IMAGE_SIZE: raise HTTPException(413, "Imagen demasiado grande. Máximo 10MB.") await file.seek(0) return content - Validar que el Content-Type sea
image/jpegoimage/png— rechazar otros tipos con 415. - Validar dimensiones mínimas: ancho y alto ≥ 640px (imagen demasiado pequeña → calidad insuficiente).
- Validar dimensiones máximas: ancho o alto ≤ 6000px (imágenes de cámaras DSLR innecesariamente grandes).
- Registrar en logs todos los rechazos por tamaño con la IP origen para análisis de amenazas.
Notes
- El check de tamaño en Nginx es O(0) — rechaza sin leer el body. El check en FastAPI es más preciso pero ya leyó el body.
- Límite recomendado: selfie máx 5MB, documento máx 10MB. Ajustar según calidad de cámara de los clientes.
- Imágenes demasiado pequeñas (<640px) deben rechazarse en
capture_agentcon mensaje de UI explicativo.
Weekly Installs
8
Repository
davidcastagnetoa/skillsFirst Seen
14 days ago
Installed on
trae8
gemini-cli8
antigravity8
claude-code8
github-copilot8
codex8