Per implementare la protezione CSRF, è necessario un token segreto, nel senso che non può essere calcolato da un utente malintenzionato. Puoi utilizzare una modifica del modello di token crittografato dal cheat di OWASP CSRF .
È possibile utilizzare una chiave segreta condivisa tra il front-end e il back-end o una chiave pubblica / privata, archiviando la chiave pubblica sul front-end e la chiave privata sul back-end. Quindi crittografare l'ID utente e la data / ora sul front-end da utilizzare come token CSRF e verificarlo sul back-end. Invece della crittografia puoi firmare i dati utilizzando un HMAC o un firma digitale . Tutte le opzioni (crittografia asimmetrica, crittografia simmetrica, HMAC e firme digitali) produrranno le proprietà dei token desiderati per essere facilmente verificabili ma effettivamente impossibili da prevedere.
Il documento OWASP suggerisce di crittografare l'id utente, il timestamp e un nonce, ma credo che il nonce non sia necessario. Vedi questa domanda e il commento sul Pagina di discussione OWASP per ulteriori informazioni.