CSRF Protection per API JSON con cookie Auth [duplicato]

1

Sto costruendo l'API per un plug-in SPA e Chrome utilizzando Rails, e sono propenso a utilizzare i cookie Secure HTTPOnly per l'autenticazione perché:

  • Questa è la soluzione predefinita per le librerie di autenticazione Rails standard come Devise e Sorcery.
  • Rails ha crittografato le sessioni lato client, il che significa nessun requisito di archiviazione lato server o ricerca DB (sì, so che avrò ancora bisogno di un qualche tipo di tracciamento e ricerca sul lato server se voglio implementare l'invalidazione della sessione corretta).
  • È trasparente per le librerie client basate sul Web.
  • I cookie sono in qualche modo rinforzati rispetto all'archiviazione locale e lo spazio dei problemi è ben compreso e compreso.

Quando attivi la modalità API di Rails disattiva sia i cookie che la protezione CSRF, quindi ho riabilitato i cookie, ma la protezione CSRF non è così facile da riattivare perché presuppone che un modulo sia reso per primo (cioè non una richiesta POST in arrivo a freddo) e probabilmente richiederà un po 'di giocherellare per configurare.

Se i cookie sono disabilitati, capisco che CSRF è un non-problema, tuttavia, per quanto posso dire, non c'è modo per un sito malevolo di falsificare una richiesta per tipo application/json senza usare XHR, che non sarebbe consentito senza esplicita autorizzazione CORS.

È un modello di sicurezza del suono per autenticare un'API JSON con i cookie ma nessun token CSRF che presuppone una corretta convalida del tipo di contenuto?

    
posta gtd 26.08.2017 - 08:45
fonte

1 risposta

1

Sì, se convalidi il Content-Type della richiesta POST , questo non può essere falsificato da un utente malintenzionato in una situazione XHR. Inoltre, dal momento che hai citato un "plug-in" di Chrome (estensione?) Vale la pena notare che le estensioni di Chrome mantengono un bucket cookie separato, quindi un attacco CSRF richiederebbe che un utente malintenzionato riesca a far sì che la tua estensione rilasci una richiesta per loro conto, non solo un utente malintenzionato CSRF nella sessione del browser principale.

    
risposta data 26.08.2017 - 17:26
fonte

Leggi altre domande sui tag