Un report.xlsx hipotético pesa 8 KB y se abre como una página de inicio de sesión. El programa guardó un archivo correctamente, pero nunca obtuvo la hoja de cálculo prevista. El nombre del archivo se elige localmente; no es prueba de lo que llegó.

Haga de la aceptación un paso aparte antes de publicar la descarga temporal:

  1. Exija una transferencia correcta y el estado de respuesta esperado. Conserve el error en lugar de tratar como completos los bytes escritos antes de él.
  2. Compare el contenido con el tipo de artefacto esperado. Una página de inicio de sesión o de filtro puede devolver 200. El Content-Type puede ser incorrecto, y un prefijo HTML en una hoja de cálculo es una advertencia que exige investigación. Un archivo que empieza con una línea de estado HTTP apunta más bien a un encuadre de respuesta en bruto.
  3. Valide todos los bytes guardados con una suma de comprobación o firma de confianza cuando esté disponible. Solo después de superar las comprobaciones requeridas debería la aplicación publicar o usar el archivo final.

Calcular un hash sin un valor esperado solo identifica los bytes que recibió. Una suma de comprobación sin firma obtenida por la misma ruta no confiable puede compartir la debilidad del artefacto; use una expectativa de confianza independiente.

Tenga cuidado también con las comparaciones de tamaño. Un cliente HTTP puede decodificar la codificación de contenido durante la lectura, así que la longitud resultante del archivo puede diferir legítimamente de una cabecera que describa el mensaje codificado. Compare la expectativa del editor con la representación realmente guardada.

Si un intento falla, conserve la salida temporal solo para reanudar de forma deliberada o descártela. Dejar bytes incompletos en la ruta final obliga al siguiente programa a adivinar si son utilizables.

Artículos relacionados