Subida segura de archivos en una web de clientes: validación, UX y límites
Una subida segura no consiste en añadir un botón «Adjuntar». Hay que limitar qué necesita el proceso, validar de nuevo en el servidor, controlar quién puede cargar y leer cada documento, almacenar fuera de rutas ejecutables y mostrar estados comprensibles. Si una persona no sabe el formato, el límite o si la carga terminó, repetirá envíos o volverá al correo.
Lo esencial, antes de empezar
- El selector del navegador orienta, pero la validación y autorización decisivas ocurren en el servidor.
- Recibido, analizado y aceptado son estados diferentes.
- El ciclo de vida incluye permisos, versiones, retención, descarga y borrado.
- Las pruebas deben cubrir archivos hostiles, interrupciones y accesos cruzados, además del caso correcto.
Define el documento antes de diseñar el cargador
| Campo | Decisión |
|---|---|
| Documento | Nombre comprensible y finalidad |
| Formatos | Lista permitida por necesidad real |
| Tamaño y cantidad | Límite justificado por uso e infraestructura |
| Acceso | Quién carga, revisa, descarga y elimina |
| Estado | Pendiente, cargando, recibido, en análisis, aceptado o rechazado |
| Retención | Evento y responsable del borrado |
| Recuperación | Respuesta a interrupción, duplicado o análisis fallido |
No copies límites de otra empresa. Un PDF contractual, una fotografía y un vídeo tienen requisitos distintos. Aunque un portal prometa caducidad, cifrado o trazabilidad, convierte cada promesa en requisitos verificables del componente, el servidor, el almacenamiento y la descarga.
El atributo accept ayuda; no protege el servidor
MDN aclara que accept orienta el selector de archivos y no valida la carga. La extensión y Content-Type también pueden manipularse. La aplicación debe comprobar el archivo recibido según su finalidad.
- Usa una lista permitida de extensiones y tipos necesarios.
- Comprueba firma o contenido cuando proceda y limita tamaño, cantidad y recursos de procesamiento.
- Genera el nombre de almacenamiento y conserva el original solo como metadato saneado.
- Autoriza cada operación y protege la petición frente a falsificación.
- Almacena fuera de la raíz pública o en un servicio separado y entrega mediante un controlador autorizado.
- Añade análisis antimalware o desarme de contenido cuando el riesgo y el formato lo justifiquen.
La guía de subida de archivos de OWASP presenta esas capas como controles complementarios. Ninguna aislada garantiza seguridad: un antivirus no corrige permisos rotos y cambiar el nombre no evita una descarga sin autorización.
Separa transferencia, análisis y aceptación
- 01
Seleccionado
El navegador conoce nombre y tamaño; todavía no ha enviado nada.
- 02
Validación local
La interfaz detecta un error evidente sin presentarlo como control de seguridad.
- 03
Cargando
Los bytes se envían y el progreso se muestra solo si es fiable.
- 04
Recibido
El servidor completó la transferencia.
- 05
En análisis
El contenido se valida o procesa; aún no está aceptado.
- 06
Aceptado o rechazado
El resultado explica el siguiente paso y conserva el contexto.
«100 % subido» no significa «documento válido». Si el análisis es asíncrono, la persona debe poder volver y consultar el resultado. Para archivos grandes, una carga por partes puede recuperar interrupciones, pero añade caducidad, reensamblado y limpieza de partes incompletas.
Da mensajes accionables y permisos específicos
Antes de elegir, muestra formatos, tamaño máximo y cantidad. Después de un error, menciona el archivo y la regla incumplida. Conserva selecciones válidas cuando otra falla, permite eliminar antes de confirmar y ofrece teclado, anuncios de estado y una alternativa a arrastrar y soltar.
Cargar en un expediente no implica leer todos sus documentos; revisar no implica eliminar. Un enlace temporal necesita caducidad y alcance. Registra actor, objeto, momento y resultado sin copiar contenido sensible a los logs. Para procesos con usuarios, expedientes y estados, revisa la comparación entre portal de clientes y correo.
Prueba los fallos que el caso ideal oculta
- Formato permitido válido y extensión permitida con contenido incompatible.
- Nombre largo, duplicado, con caracteres especiales o ruta simulada.
- Archivo vacío, justo en el límite y justo por encima.
- Varios archivos con uno fallido, interrupción y reintento.
- Usuario sin permiso y descarga desde otra cuenta.
- Archivo recibido pero rechazado durante análisis.
- Sustitución de versión y limpieza de una carga incompleta.
En un ejemplo hipotético, una asesoría solicita nóminas y facturas. El MVP asigna cada archivo a un requisito, muestra «recibido» antes de «revisado» y recuerda solo lo pendiente. El cliente corrige un rechazo sin reenviar todo. Así se diferencia del flujo descrito en la solicitud automatizada de documentos: aquí el alcance es la seguridad y recuperación de cada carga.
Una app a medida puede unir identidad, expediente, estados y permisos cuando un formulario aislado ya no basta. El primer entregable debe ser el ciclo de vida del documento y sus pruebas, no la apariencia del cargador.
Entrega un procedimiento de operación y retención
Asigna responsables para revisar rechazos, cargas bloqueadas y archivos que permanecen en análisis. Define cuánto tiempo se conservan partes incompletas, originales, versiones sustituidas y resultados del análisis. El borrado debe alcanzar almacenamiento, cachés y copias temporales conforme a la política aprobada, sin prometer que una acción visual elimina de inmediato todas las copias técnicas.
Prepara una vista operativa que permita encontrar cargas por expediente, estado y fecha sin exponer el contenido a quien solo gestiona incidencias. Registra reintentos y decisiones de aceptación; alerta por acumulación en análisis, errores repetidos o espacio próximo al límite. Prueba restauración y recuperación antes de depender del portal para documentación crítica.
Fuentes y referencias
Documentación oficial y referencias de mercado consultadas para verificar los puntos que cambian con el tiempo.