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?
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?
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.
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
).
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.
Leggi altre domande sui tag http web-hosting web-browser xss file-upload