I browser I filtri XSS proteggono dagli XSS basati su DOM?

2

Molti (ma non tutti) browser sono dotati di protezione XSS integrata che può essere attivata con un'intestazione HTTP:

X-XSS-Protection: 1; mode=block

A quanto ho capito, impedisce gli attacchi XSS riflessi controllando che il documento non contenga parti dall'aspetto fishy della stringa di query durante il caricamento. Per una SPA moderna questo non è molto utile. L'HTML caricato direttamente dal server è spesso solo statico e tutte le cose interessanti si verificano dopo che la pagina è stata caricata.

Esistono browser con filtri XSS che impediscono anche l'XSS basato su DOM? Un filtro del genere dovrebbe ad esempio verificare che qualcosa passato a .innerHTML non sia un riflesso malevolo dalla stringa di query o da qualsiasi altro input dell'utente, come una casella di testo.

Questa è una cosa? Devo ottenere qualcosa dall'abilitazione del filtro XSS su una SPA?

    
posta Anders 02.11.2018 - 09:09
fonte

2 risposte

1

Non credo che ci sia qualcosa in qualsiasi browser esattamente come quello che stai descrivendo. Tuttavia, una politica di sicurezza dei contenuti potrebbe realizzare ciò che stai cercando, in un ambiente più solido modo.

Ad esempio, se il tuo CSP impedisce lo scripting in linea, puoi effettivamente impedire l'esecuzione di qualsiasi codice JavaScript passato a innerHTML . Tieni presente che i tag script vengono normalmente eliminati da innerHTML , ma il CSP impedisce anche l'esecuzione di attributi inline on* . Ciò ovviamente significa che non sarai in grado di utilizzare lo scripting inline da solo (almeno senza esplicitare esplicitamente il contenuto di uno script specifico), ma generalmente è considerato comunque una buona pratica.

    
risposta data 08.11.2018 - 22:45
fonte
-1

Tipi di fiducia stanno per sbarazzarsi di DOM XSS.

Esistono varie implementazioni, tra cui le funzionalità future di Chrome:

google-chrome-unstable --enable-blink-features=TrustedDOMTypes --enable-experimental-web-platform-features

Oppure separa il polyfill: link

O anche tinyfill come questo: TrustedTypes={createPolicy:(n, rules) => rules}

Descrizione dettagliata disponibile qui: link

    
risposta data 02.11.2018 - 10:29
fonte

Leggi altre domande sui tag