Penso che stai sprecando il tuo tempo cercando di implementare i token di richiesta. D.W. lo spiega in questa risposta :
Of course, I know the argument why some people might recommend generating a new CSRF token for every request. They are thinking, if you also have a XSS vulnerability on your website, then if you use a single CSRF token per session it will be easy to use XSS to recover the CSRF token, whereas if you generate a new CSRF token per request, it will take more work to recover the CSRF token.
Personally, I don't find this a terribly compelling argument. If you have a XSS vulnerability on your site, it's still possible to recover CSRF tokens even if you generate a new CSRF token for every request, it just takes a few extra lines of malicious Javascript. Either way, if you have a XSS vulnerability on your site and you face a serious, knowledgeable attacker, it's hard to guarantee security, no matter how you generate your CSRF tokens.
Detto questo, se vuoi ancora farlo, forse il seguente approccio funzionerebbe:
- Quando viene caricato un modulo, esegui una chiamata AJAX con JavaScript a
getCsrfToken.php
o qualcosa del genere. Assicurati di avere CORS rigoroso su questo.
- Sul lato server, genera un token casuale se la sessione è valida e la rimanda al client.
- Potresti voler invalidare tutti i token più vecchi per quella sessione. Tuttavia, questo causerà problemi se l'utente ha il tuo sito aperto in più schede. Dall'altra parte, se non lo fai, qual è il punto?
Ho appena immaginato questa soluzione ora, quindi considerala più come un suggerimento da valutare che come una risposta sicura definitiva.