Esistono principalmente due tipi di attacchi XSS: persistenti e ad-hoc.
Una sessione di navigazione privata ti proteggerà dagli attacchi XSS ad-hoc, ma non dagli attacchi persistenti.
Un XSS persistente funziona da parte di un utente malintenzionato che inserisce il codice di script da qualche parte nella pagina sensibile, ciò potrebbe essere fatto inviandovi un messaggio preparato sulla piattaforma o con altri mezzi per inserire dati nella memoria della pagina sensibile. Quando si accede alla pagina sensibile per visualizzare alcuni dati, i dati inseriti verranno caricati dal server e trasferiti nel browser e verranno eseguiti se il sito è vulnerabile. Un esempio potrebbe essere un messaggio preparato in una transazione bancaria online. L'utente malintenzionato ti invierà una transazione reale e la parte del messaggio conterrà uno script dannoso. Nessuna altra pagina è coinvolta quindi non puoi proteggerti da questo, solo il proprietario della pagina può.
Un XSS ad-hoc può funzionare facendo clic su un collegamento preparato, che include dati di iniezione. Tale link potrebbe apparire come https://banking.securebank.com/searchTransaction?query=<script>doEvil(...)</script>
dove lo script inserito è parte del collegamento. L'autore dell'attacco tenterà di farti fare clic su questo link, o tenterà di eseguirlo in background tramite JavaScript dalla sua pagina preparata. Pertanto, se si aprono collegamenti e-mail e pagine non attendibili in una sessione separata, l'account utente nella pagina sensibile sarà al sicuro da questo tipo di attacco, poiché non si è effettuato l'accesso alla pagina sensibile nella sessione di navigazione in incognito. Quindi, mentre l'XSS potrebbe ancora essere eseguito, non può danneggiare il tuo account sulla pagina sensibile, che è ciò che vogliamo proteggere.