Il formato del file è irrilevante per la sicurezza del trasporto dei dati. È possibile inviare testo in chiaro e formati binari arbitrari in modo sicuro attraverso un tunnel TLS crittografato. Senza la sicurezza del trasporto, i dati possono essere catturati in entrambi i modi e protetti solo tramite crittografia nel formato stesso.
Per quanto riguarda la sicurezza sul livello dell'applicazione, i dati sensibili zippati hanno storicamente stato una misura popolare contro una classe di attacchi di applicazioni Web correlate allo sniffing dei contenuti. Ad esempio, a seconda del formato dei dati segreti e della prevedibilità del percorso di download, è possibile introdurre un inclusione di script tra siti (XSSI, non XSS) offrendo download di testo in chiaro senza adeguate misure di sicurezza. Ecco uno scenario immaginario per spiegare l'attacco:
Supponiamo che qualsiasi utente autenticato sulla tua piattaforma possa scaricare un file di configurazione sensibile specifico per l'utente da questo URL:
https://yourservice.example/download/myconfig
Il file di configurazione ha il seguente formato:
user_id = 314159
secret_token = "719fe66f5159f86e798eabf930b8c9c2"
Ora un utente malintenzionato potrebbe semplicemente inviarti un collegamento a un sito Web preparato con il seguente contenuto:
<script src="https://magicservice.example/download/myconfig"></script>
<script>
alert(secret_token);
</script>
Ciò che accade qui è che il tuo browser interpreta la risposta dal link di download come codice JS esterno e in tal modo perde i valori di user_id
e secret_token
nella pagina controllata da attaccante incorporante come variabili JS globali. Zippare o riformattare i dati in qualche modo avrebbe prevenuto questo attacco perché un file ZIP non può produrre codice JS valido. Sebbene questo caso specifico possa sembrare inverosimile, in passato ci sono state molte altre vulnerabilità correlate al sniffing.
Si noti che il modo corretto e moderno per mitigare questo scenario XSSI non è zippare il file ma inviare un'intestazione X-Content-Type-Options: nosniff
che costringe i browser ad accettare solo JS con un tipo MIME corretto e a inviare un'intestazione Content-Disposition: attachment
che istruisce i browser per non visualizzare il download in linea.