Rischi di servire contenuto non affidabile sotto HTTP Content-Type: text / plain?

3

In questo caso mi imbatterò in attacchi XSS o verrà richiesto un download di file?

Ci sono problemi di sicurezza che potrebbero sorgere in un browser moderno?

    
posta George Bailey 21.06.2012 - 20:43
fonte

2 risposte

4

Am I gonna run into XSS attacks by doing this

Sì.

Il testo / plain- > text / html content-type-sniffing problema menzionato da curiousguy è l'attacco più probabile, ma ci sono anche molti più casi in cui browser e plugin fanno content-sniffing; spesso questi sono immuni a X-Content-Type-Options e Content-Disposition: .

Ad esempio lo schema URL jar: in Firefoxen vecchio, applet Java e iniezione di criteri crosspointini Flash ( loadPolicyFile ).

L'unico modo sicuro per fornire contenuti arbitrari non attendibili senza essere a rischio di XSS è di servirlo da un dominio diverso * che non condivide un'origine con il tuo sito principale.

*: varianti: il dominio di secondo livello completamente diverso con indirizzo IP diverso è più stretto. Ci sono problemi con le applet che sono in grado di fare connessioni di rete con lo stesso indirizzo IP anche se il dominio è diverso sotto Java. L'utilizzo di un sottodominio può essere OK soggetto a limitazioni - se è files.example.com il sito principale in quel caso dovrebbe essere su www.example.com e non example.com , a evitare che il sottodominio possa leggere i cookie dal genitore. Può ancora scrivere cookie, che in alcuni casi possono causare problemi. L'utilizzo di un indirizzo IP diretto per i contenuti non attendibili è un'altra alternativa ragionevole se non desideri acquistare un dominio separato.

    
risposta data 22.06.2012 - 10:30
fonte
4

Alcuni browser molto danneggiati (in particolare vecchie versioni di IE) cercano di "snif" il tipo di contenuto "vero" e si comportano come se il tipo di contenuto fosse text/html .

Forse puoi provare a mettere in blacklist i suddetti browser, in base allo user-agent o fornendo HTML come testo e verificando se il browser esegue JavaScript in text/plain .

Se vuoi che il browser salvi il file anziché visualizzarlo, prova Content-Disposition (ad esempio Content-Disposition: Attachment; filename=example.txt ).

Sicurezza IE8

Puoi anche utilizzare X-Content-Type-Options: nosniff Intestazione HTTP specifica per IE per impedisce lo sniffing MIME delle risorse HTTP text/plain .

Sites hosting untrusted content can use the nosniff directive to ensure that text/plain files are not sniffed to anything else.

    
risposta data 21.06.2012 - 21:15
fonte

Leggi altre domande sui tag