Dipende . Se l'attaccante non è MITM, nel senso che non possono intercettare il traffico tra la tua app Web e il server API, dovrebbe essere sufficiente un singolo token CSRF per l'intera sessione.
Supponendo che le operazioni sensibili siano sul lato server (ossia consentono l'accesso alle risorse solo al proprietario della risorsa, ad esempio "elimina il mio account", ecc.) Il token garantisce che il browser che effettua la richiesta sia il browser dell'utente legittimo e autenticato. È tutto ciò di cui dovresti preoccuparti, penso.
D'altra parte, se l'utente malintenzionato è in grado di esaminare il traffico non sicuro tra l'app Web e la propria API, può ottenere il token CSRF e il proprio session_id e fare cose diaboliche in modo trasparente. In tal caso, concedere, utilizzare e successivamente scartare un token per ogni richiesta (POST o qualsiasi altro tipo che fa un'operazione sensibile) rende solo il loro lavoro un po 'più difficile, ma sei ancora condannato.
miei 2 centesimi ...
Che cosa stai usando il token per? Supponendo che lo stai usando per qualcosa di diverso dall'impedire l'XSS, è difficile dire se sarà ** "buono" ** abbastanza per il tuo scenario. – Sam
token @Sam per xss? – itachi
@itachi Il token CSRF di Laravel viene utilizzato per prevenire richieste cross-site (in genere XSS).È un token salvato nella sessione del sito Web e inviato con ogni invio di moduli, quindi un modulo deve essere inviato dal sito Web con la sessione per avere la sessione corretta ... piuttosto che fingere una richiesta con lo scripting cross-site. – Sam