Non devi fare affidamento sui browser che rispettano l'intestazione content-type
per sicurezza. Un rapido sguardo a CVE-2010-1420 dovrebbe darti un'idea. Il meccanismo Content-sniffing implementato nei browser può essere manipolato dagli autori di attacchi per attivare attacchi XSS ( Content sicuro Sniffing per browser Web: un sondaggio ).
Rilevamento dei comportamenti di sniffing dei contenuti
Secondoquestosondaggio,comepuoivedere,ilbrowserSafaripotrebbecausareunproblemaanchesequestononèunproblemainaltribrowser(possoaggiungerti Bug 637981 a questo elenco).
Vai oltre:
Puoi proteggere ulteriormente la tua applicazione consentendo al tuo server web di forzare il browser a disabilitare MIME Sniffing per il file servito:
X-Content-Type-Options: nosniff
Poiché gli attacchi a cui stai cercando di difendersi potrebbero essere fatti tramite i file che puoi consentire oggi o domani ai tuoi visitatori di caricare, puoi forzare il browser a presentare all'utente una finestra di dialogo di salvataggio dei file. Quando l'intestazione noopen
è impostata, l'utente non può aprire direttamente il file perché sarà costretto a salvare il file localmente per primo, il che impedisce il rendering del file nel contesto corrente del browser. Puoi ottenerlo con:
Content-Disposition: attachment; filename=untrustedfile.html
Inoltre, in questo ultimo caso (intendo se autorizzi gli utenti a caricare file), puoi aggiungere un altro livello di sicurezza alla tua applicazione web ( Scoperta rischiosa ):
- Utilizza una whitelist per assicurarti che sia consentita solo una quantità limitata di estensioni di file
- Archivia i file caricati al di fuori della radice Web e utilizza uno script di download sicuro che carica questi file dal disco e ne presenta i contenuti all'utente;
- Utilizza nomi di file non prevedibili e modifica l'estensione del file.