Ho token CSRF ovunque sul mio sito di e-commerce che usano i moduli POST. Tuttavia, non voglio iniziare una sessione (con un cookie) a meno che non sia assolutamente necessario (principalmente perché sto usando la cache della vernice, e non voglio colpire il server di back-end a meno che non sia assolutamente necessario, anche con ESI).
Ciò significa che se l'utente sta solo sfogliando il catalogo, non viene creata alcuna sessione. (Se visitano le pagine di accesso o di registrazione, viene creata una sessione per creare un token CSRF per il modulo di accesso / registrazione, ma non è un problema, dal momento che stanno per accedere comunque.)
Il modulo POST per "aggiungi al carrello" nella pagina del prodotto mi sta causando alcuni problemi.
Voglio proteggere "aggiungi al carrello" con token CSRF (ad esempio, un utente malintenzionato potrebbe utilizzare CSRF per aggiungere altri prodotti al proprio carrello). Ma non voglio aggiungere un token CSRF a ciascuna pagina del prodotto, poiché ciò dovrebbe avviare una sessione, il che significa che ogni visualizzazione del prodotto dovrebbe colpire il back-end per recuperare il token.
Quindi, quello che ho fatto è che quando un utente senza una sessione aggiunge un prodotto, non è necessario alcun CSRF. Quindi, quando il prodotto viene aggiunto, viene creata una sessione (in modo che sia possibile utilizzare il carrello) e tutte le visualizzazioni della pagina prodotto successive abbiano moduli che utilizzano CSRF.
Questa cattiva pratica è questa? Per quanto posso vedere, qualsiasi "attacco csrf" sull'aggiunta al prodotto non può causare danni.
(So che è improbabile che qualcuno si preoccupi di fare un attacco CSRF su una pagina "aggiungi al carrello" ... e anche se lo facessero, probabilmente non è comunque un grosso problema ... sono solo interessato a fare cose "giuste").
(Controllare anche le intestazioni di origine / referente.)
Molte grazie :)