El formato del archivo es irrelevante para la seguridad del transporte de datos. Puede enviar de forma segura tanto texto sin formato como formatos binarios arbitrarios a través de un túnel TLS cifrado. Sin seguridad de transporte, los datos se pueden capturar de cualquier manera y solo se protegerían mediante cifrado en el formato mismo.
Con respecto a la seguridad en la capa de aplicación, la compresión de datos confidenciales ha sido históricamente una medida popular contra una clase de ataques de aplicaciones web relacionados con la detección de contenido. Por ejemplo, dependiendo del formato de los datos secretos y la previsibilidad de la ruta de descarga, puede introducir un inclusión de secuencia de comandos entre sitios (XSSI, no XSS) vulnerabilidad al ofrecer descargas de texto sin formato sin las medidas de seguridad adecuadas. Aquí hay un escenario imaginario para explicar el ataque:
Supongamos que cualquier usuario autenticado en su plataforma puede descargar un archivo de configuración confidencial específico del usuario desde esta URL:
https://yourservice.example/download/myconfig
El archivo de configuración tiene el siguiente formato:
user_id = 314159
secret_token = "719fe66f5159f86e798eabf930b8c9c2"
Ahora un atacante podría simplemente enviarle un enlace a un sitio web preparado con el siguiente contenido:
<script src="https://magicservice.example/download/myconfig"></script>
<script>
alert(secret_token);
</script>
Lo que sucede aquí es que su navegador interpreta la respuesta del enlace de descarga como un código JS externo y, por lo tanto, pierde los valores de user_id
y secret_token
a la página controlada por el atacante como variables globales de JS. La compresión o el cambio de formato de los datos de alguna manera habrían evitado este ataque porque un archivo ZIP no puede producir un código JS válido. Si bien este caso específico puede parecer inverosímil, ha habido muchas otras vulnerabilidades relacionadas con el rastreo en el pasado.
Tenga en cuenta que la forma correcta y moderna de mitigar este escenario XSSI no es comprimir el archivo, sino enviar un encabezado X-Content-Type-Options: nosniff
que obliga a los navegadores a aceptar solo JS con el tipo MIME correcto, y enviar un encabezado Content-Disposition: attachment
que instruya a los navegadores para no mostrar la descarga en línea.