Sto pensando a CSRF a proteggere tutte le richieste AJAX pubbliche che restituiscono JSON, perché cosa impedire a un altro sito di falsificare l'intestazione AJAX e utilizzare il JSON come se fosse un'API pubblica? Penso che la protezione CSRF sia la soluzione migliore per questo, tuttavia sono interessato al modo in cui Laravel gestisce questo :
- Usando il filtro CSRF di laravel, noto in app / filters.php che controlla usando
Session:token
, ciò richiede che ogni visitatore pubblico abbia una sessione e imponga requisiti aggiuntivi sulla RAM del server (come contrario alla navigazione senza sessioni). - Nel filtro CSRF, Laravel controlla
Input::get('token')
, ma potrei voler fare anche le chiamate ajax POST. Le richieste POST non funzioneranno? - Che cosa succede se un visitatore ha una finestra aperta. Si allontanano per un po '... poi tornano per eseguire una richiesta di ajax. Questo sarebbe un problema e avremmo bisogno di aggiornare la pagina, che sembrerebbe scomoda per un visitatore pubblico (al contrario degli utenti che hanno effettuato l'accesso, dove potremmo semplicemente reindirizzare a una pagina di accesso).
- Cosa succede se un visitatore (o anche un utente che ha effettuato l'accesso) ha 2 finestre aperte? Si allontanano e lasciano scadere la sessione. Quindi, ritorna e aggiorna una finestra (o accedi di nuovo in una finestra), quindi vai alla seconda finestra per eseguire un'operazione (solo per trovarla non funziona o sono costretti ad accedere di nuovo).
Qualcuno può affrontare questi problemi nell'implementazione della protezione CSRF di Laravel?