Va bene per i browser (iOS) interpretare application / octet-stream come HTML + JS?

2

Questo riguarda il test application/octet-stream qui:
link

Le versioni desktop di Chrome, Firefox e Safari scaricheranno il file. Lo stesso per Chrome e Firefox su Android. Ma su iOS, tutti e tre i browser eseguono / interpretano il file come se fosse HTML, incluso il Javascript che contiene.

La mia domanda: va bene?

So che i download dovrebbero usare Content-Disposition: attachment , e questa risposta SO parla di non fare affidamento su Content-Type . Ma ... sembra ancora sbagliato.

C'erano CVE per il trattamento di text/plain come HTML ( CVE-2010- 1420 , CVE-2013-5151 ). Com'è davvero sbagliato, ma application/octet-stream va bene?

    
posta adam-p 16.03.2017 - 17:30
fonte

1 risposta

0

My question: Is that okay?

Ignorare il tipo di contenuto dato e invece indovinare cosa potrebbe essere è una cattiva idea. Ciò può comportare, ad esempio, l'esclusione di filtri esterni (come firewall o proxy) che si basano sul tipo di contenuto per il tipo di analisi che fanno. E non sarebbe la prima volta se alcune parti del browser utilizzano il Content-Type originale per le loro decisioni, mentre altre parti usano il Content-Type indovinato, che potrebbe comportare l'esclusione di restrizioni e filtri interni del browser (come il filtro di protezione XSS o simile ).

A parte questo comportamento imprevisto diverso dagli altri browser (e dallo standard) è un incubo per gli sviluppatori e può anche causare problemi di sicurezza. Immagina solo che il sito offra vari modi per caricare vari file che vengono poi offerti per il download come application / octet-stream, nella speranza che ciò comporti un download. Invece il browser iOS potrebbe interpretare il file come HTML + JS che essenzialmente si traduce in un XSS memorizzato.

Si raccomanda di disabilitare forzatamente tali ipotesi impostando X-Content-Type-Options=nosniff" nell'intestazione HTTP.

    
risposta data 16.03.2017 - 17:48
fonte

Leggi altre domande sui tag