L'interessante domanda Stack Overflow "I cookie proteggono i token dagli attacchi XSS?" è stato chiuso come troppo ampio, ma come menzionato in un commento su di esso, esiste una domanda tangibile su "Cosa succede se il mio token anti-CSRF viene compromesso da un attacco XSS?"; mi sembra che le risposte a questa domanda possano fornire informazioni che aiuteranno le persone a formare opinioni sulle domande poste su Stack Overflow. Quindi sto ponendo la domanda tangibile.
Supponiamo che utilizziamo il metodo Double Submit Cookies (a meno che non conosca un metodo migliore di cui sono inconsapevole) e archiviamo i JWT (ad esempio i token di autenticazione) in HttpOnly, Secure cookies.
Le seguenti pagine Exchange Stack di sicurezza sono rilevanti:
- La protezione CSRF può funzionare anche se Esiste una vulnerabilità XSS?
- localStorage vs cookie solo HTTP + XSRF: è meglio quando si tratta di XSS?
- JWT è presente nei cookie con qualsiasi soluzione CSRF altrettanto vulnerabile all'XSS di JWT in localStorage?
- Double Submit Cookies vulnerabilities
- Perché i cookie sono considerati più sicuri contro XSS?
- Perché Double Submit Cookies richiede un cookie separato?
- L'impostazione httponly impedisce il furto di una sessione usando XSS?
- Esiste una strong protezione contro CSRF eseguita dal server sames tramite XSS memorizzato?
UPDATE:
Ho letto di più sui metodi anti-CSRF e ho trovato questa pagina OWASP confrontando il metodo di Double Submit Cookies con il Pattern di progettazione di Synchronizer alternativo e il Pattern token crittografato, e dichiarando che in termini di forza di difesa possono essere ordinati come:
- Token Synchronizer (cioè CSRF)
- Double Cookie Defence
- Modello token crittografato
(OWASP afferma anche che 1. richiede lo stato della sessione mentre 2. e 3. non richiedono uno stato lato server. C'è una discussione sul fatto che il pattern token crittografato sia effettivamente stateless nei commenti all'articolo Sfruttando il modello di token crittografato . Detto articolo descrive anche le carenze di 1. e 2. che 3. risolve, apparentemente senza introdurre nuovi problemi di sicurezza o problemi di architettura. In quanto tale, non so perché OWASP lo abbia elencato come terzo in termini di forza di difesa, forse a causa della quantità di test che è stato sottoposto a questo punto nel tempo, poiché sia esso sia Double Submit I cookie sono relativamente nuovi, forse a causa della discussione sull'apolidia / stato d'animo e la protezione degli attacchi di replay nei commenti dell'articolo? Sarebbe bello se ci fosse una spiegazione di quell'ordinamento.)
Ad ogni modo ... Se qualcuno vuole rispondere a questa domanda con l'ipotesi alternativa che sia usato il Pattern token sincronizzatore o il Pattern token crittografato, sarebbe perfetto.