Ho letto molti articoli sulla protezione CSRF (this is a good one) e varie domande qui su SO, ma nessuno di loro sembra essere sufficientemente informativo da rispondere alla mia domanda.Protezione dei moduli di login e commenti contro CSRF
Sto sviluppando il mio CMS e desidero proteggere i moduli di accesso e di commento. Permetterò agli utenti anonimi di commentare il mio sito web.
Tutti i moduli sul mio sito Web sono protetti tramite token. Conosco già questo approccio, ma il problema è che ha bisogno di una sessione attiva (cioè dopo che l'utente ha effettuato l'accesso). Il problema con i moduli di login e commenti è che sono accessibili a chiunque e non richiedono l'accesso - quale sarebbe la migliore protezione contro CSRF in questo caso?
Sul link sopra, ho letto che potrebbe essere possibile creare una "pre-sessione" quando l'utente tenta di accedere e quindi passare ai soliti metodi anti-CSRF (come l'assegnazione di un token alla sessione dell'utente), ma non ho idea di come ottenere ciò.
L'intestazione del referrer è una soluzione debole, quindi suppongo di non dovermi preoccupare. L'intestazione Origin, è, per quanto ho provato, supportato solo in Google Chrome. Che dire delle intestazioni personalizzate? XMLHTTPRequest sembra una possibilità, tuttavia, ho passato letteralmente più di tre ore su Google a cercare alcune informazioni su come si dovrebbe implementare tale misura di sicurezza sul proprio sito web. Ma anche se potessi usare un'intestazione personalizzata, non lo rende inutile dal momento che le intestazioni HTTP possono essere simulate completamente?
Quindi, la domanda: come dovrei proteggere i miei moduli di login e commenti contro CSRF?
Edit: ecco alcune informazioni aggiuntive dal link che ho fornito in precedenza:
Si consiglia rigorosa convalida Referer per la protezione contro login CSRF perché moduli di login in genere sostengono su HTTPS, in cui l'intestazione Referer è attendibilmente presente per richieste legittime. Se una richiesta di login manca di un'intestazione Referer, il sito deve respingere la richiesta di difesa contro la soppressione dannosa.
e
gettoni di validazione segreto può difendersi login CSRF, ma gli sviluppatori spesso dimentica di attuare la difesa perché, prima di login, c'è nessuna sessione a cui associare il token CSRF. Per utilizzare i token di convalida segreti per la protezione da CSRF di accesso, il sito deve prima creare una "presession" , implementare la protezione CSRF basata su token e quindi la transizione a una sessione reale dopo l'autenticazione corretta.
Non riesco a mettere fine a questo argomento dopo aver letto le citazioni precedenti. Uno di questi menziona l'utilizzo dell'intestazione del referrer, ma non sono abbastanza sicuro se questo aggiunge davvero molto alla sicurezza della webapp.
Modifica 2: Informazioni sull'utilizzo di CAPTCHA?
Questa potrebbe essere una domanda per [Sicurezza SE] (http://security.stackexchange.com/) altrimenti [OWASP] (https://www.owasp.org/) è una buona risorsa per la sicurezza Web. – HamZa
Ma come mai ci sono così tante domande sullo stesso argomento qui su SO? – Onion
Per "completamente" proteggere un'applicazione Web da una certa attaque è troppo ampia (secondo me), altrimenti sarò lieto di vedere una buona risposta che copre questo problema (ed è per questo che ho upvoted :)) – HamZa