Permitir que un visitante adjunte un currículum, una fotografía o un documento facilita muchos procesos. También abre una entrada que debe diseñarse con cuidado: el servidor recibe un archivo cuyo nombre, formato y contenido controla inicialmente otra persona.

La solución no consiste necesariamente en eliminar la función. Consiste en aceptar únicamente lo que el proceso necesita, almacenarlo de forma segura y limitar lo que puede ocurrir después.

Define el uso antes de configurar el formulario

“Adjuntar archivo” es un requisito demasiado amplio. Hay que concretar qué documentos son necesarios, quién puede enviarlos, quién los consulta, cuánto tiempo se conservan y qué tamaño resulta razonable.

Un formulario de empleo puede necesitar PDF; una incidencia técnica puede admitir imágenes. Aceptar ejecutables, archivos comprimidos o cualquier extensión sin una necesidad real aumenta la superficie de ataque.

Utiliza una lista de formatos permitidos

OWASP recomienda permitir únicamente extensiones necesarias para la funcionalidad. Es preferible una lista positiva, como PDF, JPG y PNG, a intentar enumerar todos los formatos peligrosos.

La extensión no basta. El servidor debe comprobar el tipo esperado y no confiar únicamente en el valor declarado por el navegador, que puede manipularse.

No confíes en el nombre original

Los nombres pueden contener caracteres inesperados, rutas, dobles extensiones o términos que provoquen conflictos. La aplicación debería generar un identificador propio y conservar el nombre original solo cuando sea necesario y de forma tratada.

Por ejemplo, un archivo llamado factura.pdf.php no debería aceptarse como PDF por contener esa palabra en el nombre.

Limita tamaño y cantidad

Un fichero excesivamente grande puede consumir almacenamiento, memoria o tiempo de proceso. Deben existir límites en la aplicación y en el servidor, acompañados de mensajes comprensibles para el usuario.

También conviene limitar el número de envíos y aplicar medidas contra automatización abusiva. El objetivo es reducir spam y agotamiento de recursos sin impedir solicitudes legítimas.

Almacena los archivos fuera del área ejecutable

Cuando sea posible, los ficheros recibidos deberían guardarse fuera de la raíz pública de la web o en un servicio separado. Si deben descargarse, la aplicación puede comprobar autorización y servirlos con un nombre seguro.

Un directorio de subidas no debería ejecutar scripts. Los permisos del sistema y la configuración del servidor deben reforzar esta separación.

Analiza el contenido

Un antivirus o servicio de análisis puede añadir una capa útil, especialmente en documentos que serán descargados por empleados. No sustituye la validación y puede no detectar amenazas nuevas.

Para formatos compatibles puede utilizarse reconstrucción de contenido, eliminando elementos no necesarios. Esta medida debe probarse porque puede modificar documentos legítimos.

Protege la descarga

No todos los archivos enviados deben quedar accesibles mediante una URL pública. Currículums, documentos de identidad o presupuestos pueden contener datos personales y requieren permisos adecuados.

La aplicación debe comprobar qué usuario puede descargar cada elemento, evitar enumeraciones predecibles y registrar accesos cuando sea proporcionado.

Aplica protección CSRF y autenticación cuando proceda

Si la subida se realiza dentro de una cuenta, debe mantenerse la protección de sesión y comprobarse que la solicitud procede del flujo legítimo. Para áreas privadas también deben revisarse roles y permisos.

Gestiona la conservación

Guardar archivos indefinidamente “por si acaso” aumenta exposición y costes. La empresa debe definir cuánto tiempo los necesita y aplicar el criterio de protección de datos correspondiente.

La base jurídica, información al interesado y plazos concretos deben validarse con asesoramiento especializado. T3chWare puede implantar técnicamente las decisiones aprobadas, pero no sustituye el análisis jurídico.

Prueba casos normales y anómalos

Antes de publicar deben probarse formatos válidos, extensiones no admitidas, nombres extraños, archivos vacíos, tamaños límite y permisos de descarga. También hay que revisar qué se registra en los logs y evitar que contengan información sensible innecesaria.

Cómo puede ayudar T3chWare

Las auditorías web de T3chWare pueden revisar formularios, validaciones, almacenamiento, permisos y exposición de archivos. En proyectos Build & Secure, el flujo puede diseñarse desde el inicio según la finalidad real.

Conclusión

Un formulario con adjuntos debe aceptar poco, validar varias capas, almacenar de forma aislada y proteger la descarga. La comodidad del cliente y la seguridad pueden convivir cuando el flujo se diseña con límites claros.

Solicita una revisión de formularios y archivos en T3chWare

 

Fuente técnica: OWASP File Upload Cheat Sheet.