input_size_validation
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)
More from davidcastagnetoa/skills
traefik
Reverse proxy moderno con autodiscovery nativo en Kubernetes y Let's Encrypt
67easyocr
OCR alternativo a PaddleOCR, excelente en caracteres especiales y múltiples scripts
36prisma-nestjs-patterns
>
26c4_model_structurizr
Diagramas de arquitectura C4 como código con Structurizr DSL, versionados en Git
24exif_metadata_analyzer
Analizar metadatos EXIF para detectar edición previa con Photoshop, GIMP u otros editores
19insightface_arcface
Reconocimiento facial de estado del arte con ArcFace R100 para comparar selfie con foto del documento
15