La CSRF è possibile se non utilizzo nemmeno i cookie?

6

Ho una API REST che sta usando un token di accesso che viene inviato nell'intestazione o come query url. Non uso affatto i cookie.

Sono ancora vulnerabile agli attacchi CSRF? So che lo farei se usassi i cookie poiché altre schede possono inviare richieste e anche i cookie verranno inviati, ma nel mio caso le intestazioni / UrlParam non verranno inviate affatto.

    
posta stan 29.06.2014 - 19:34
fonte

4 risposte

7

No non sei vulnerabile in quello scenario.

Il motivo è esattamente come spieghi: un sito di terze parti potrebbe generare una richiesta al tuo sito, ma i dettagli di autenticazione non verranno allegati.

    
risposta data 29.06.2014 - 19:49
fonte
4

CSRF sarebbe ancora possibile se si utilizza l'autenticazione HTTP Basic o HTTP Digest. Il motivo è che i browser implementano tali protocolli "in modo nativo", il che significa che il browser inserirà automaticamente le credenziali con ogni richiesta che si rivolge a un determinato dominio.

Se stai utilizzando qualche altra forma di autenticazione senza cookie, allora CSRF non è possibile.

Ecco un link valido che spiega questo: OWASP CSRF

    
risposta data 16.07.2014 - 12:59
fonte
3

Dalla tua domanda non è chiaro se sei vulnerabile o meno. Il token è stato corretto o è un token generato casualmente e crittograficamente strong? se è corretto non ha alcun valore.

Stai usando SSL? in caso contrario, il tuo token può essere annusato e rubato: si consiglia vivamente di utilizzare SSL.

Si noti inoltre che non è consigliabile passare il token nell'URL. Gli URL sono sensibili poiché sono soggetti ad accedere in molti luoghi come cronologia del browser, dispositivi di rete ecc ... link

Come si convalida sul lato server che il token è valido? lo tieni nella sessione del server? Solitamente le API REST sono progettate per essere apolidi, il che significa che nessuna sessione deve essere mantenuta. Se si desidera attenersi a questa regola, è necessario creare il token in un cookie solo http e su ogni chiamata API inviare il valore del cookie come parte della richiesta. La tua API dovrebbe quindi verificare che il valore del cookie sia uguale al token nella richiesta. Un utente malintenzionato non ha potuto leggere il cookie e quindi non sarebbe stato in grado di inviare il token corretto nella richiesta.

questo è un bel blog a riguardo: link

    
risposta data 30.06.2014 - 09:45
fonte
1

Sembra un modo giusto per proteggersi dall'attacco CSRF. Sebbene, potresti voler generare un nuovo token su ogni richiesta e invalidare i token usati precedenti.

    
risposta data 30.06.2014 - 11:57
fonte

Leggi altre domande sui tag