Come prevenire (senza cook) l'attacco csrf?

1

Questo è uno scenario del mondo reale. Sto cercando di fornire tutti i dettagli necessari.

Riepilogo

Un utente cambia il proprio IP ad ogni richiesta utilizzando un browser senza cookie. Come posso proteggere le loro richieste di accesso?

Impostazioni

  • API restful e thin client Web JS
  • Token CSRF GET Endpoint che genera un token csrf che è legato all'IP di richiesta
  • Accedi POST Endpoint utilizzando i parametri email , password e csrf_token
  • È stato impostato Access-Control-Allow-Origin , quindi le risposte possono essere recuperate solo dal sito Web di un utente non malintenzionato. Tuttavia, la richiesta di pre-volo è non emessa come da specifiche.
  • C'è un tempo di attesa della richiesta per l'indirizzo IP
  • Utente che utilizza il browser che è senza cookie e non ha una memoria locale
  • Utente che modifica il proprio indirizzo IP ogni richiesta, ad es. usando Tor o Onavo

problema

Poiché l'indirizzo IP cambia per ogni richiesta, il token csrf non è mai valido e l'utente non può accedere.

Potremmo smettere di associare il token csrf con l'IP. Tuttavia, permetteremo a un utente malintenzionato di generare il proprio token csrf e inviarlo all'utente (che sconfigge l'intero scopo). Cioè l'utente malintenzionato potrebbe ora limitare il limite di un utente in background e impedire che accedano quando visitano il nostro sito.

Domanda

L'unico riferimento che ho trovato suggerito di usare i cookie (cosa che non possiamo fare).

Che cosa dovremmo fare meglio qui per consentire all'utente di accedere evitando comunque csrf?

    
posta vincent 12.09.2017 - 01:56
fonte

1 risposta

0

Quindi questa è un'API REST-piena con cui stai lavorando e i tuoi clienti utilizzano browser che non supportano i cookie, l'autenticazione ergo per la tua API avviene tramite un'intestazione Authorization ? E suppongo che il contenuto di questa intestazione Authorization venga popolato per il contenuto della risposta dall'endpoint dell'API di accesso?

Se questo è il caso, la tua API è già protetta contro CSRF. CSRF contro l'endpoint di accesso funzionerebbe solo se la risposta dal server imposta un cookie nel browser della vittima, che è stato poi utilizzato per autenticare le richieste successive.

    
risposta data 12.09.2017 - 05:43
fonte

Leggi altre domande sui tag