Quando non dovrei usare la protezione CSRF per un modulo?

5

Per impostazione predefinita, ho una protezione CSRF per tutti i miei moduli utilizzando un token.

Tuttavia ho notato un'altra applicazione web che ha una funzione simile a una delle mie forme. E non hanno usato il token CSRF.

Quindi ho pensato che non proteggessero da attacchi CSRF per quel modulo.

Quindi

domanda 1) diversa dal token CSRF, non ci dovrebbe essere un altro modo per proteggere contro CSRF giusto?

Sto assumendo che la risposta è questa è l'unica via. quindi la mia domanda principale è

domanda 2) quando non dovresti usare la protezione CSRF?

Conosco una possibile istanza che è quando il modulo POST è indirizzato a URL esterni.

L'ho letto su django docs .

Ci sono altri casi in cui non dovresti usare la protezione CSRF o non necessaria?

Aggiorna

a) altri metodi di protezione CSRF includono la ri-autenticazione dell'utente

b) PUOI scappare senza proteggere contro CSRF per il modulo POSTBACK quando non richiedi l'accesso dell'utente (vedi le risposte e i commenti di nbnh)

    
posta Kim Stacks 12.03.2011 - 05:37
fonte

2 risposte

3

No, i token non sono l'unico modo per proteggere in modo affidabile contro CSRF.
In effetti, è stato solo di recente che le librerie pacchettizzate erano abbastanza mature da giustificare la raccomandazione, prima che il tuo personale avesse un'alta probabilità di peggiorare le cose.

Un altro modo per proteggersi da CSRF è la ri-autenticazione. Cioè chiedendo di nuovo all'utente la sua password.
Il vantaggio di questo approccio è che la tecnica è familiare agli sviluppatori e difficilmente incasinata. Lo svantaggio è che non è trasparente per l'utente.
Oggigiorno, con la maggior parte dei framework con la protezione incorporata e le librerie aggiuntive disponibili, direi che i token CSRF sono preferiti ... ma non è l'unico modo.

Per quanto riguarda Q # 2, dato che @nhnb ha scritto correttamente, se nessuna modifica ha luogo, potrebbe essere in grado di escludere la protezione.
Anche se considerando quanto sia banale negli attuali framework, la trasparenza dell'utente e il sovraccarico minimo, probabilmente stai meglio lasciarlo e non combattere il codice per eliminarlo ...

    
risposta data 12.03.2011 - 18:57
fonte
7

Sì, l'uso dei token è l'unico modo per proteggere in modo affidabile dagli attacchi CSRF.

Se una protezione è richiesta o meno dipende dalle azioni che il programma fa con i dati inviati.

Come regola generale: se i dati vengono modificati con le autorizzazioni o il contesto dell'utente corrente, è necessaria la protezione.

Se non si verificano modifiche, potrebbe essere ok non proteggere. Un esempio comune sono i moduli di ricerca e i risultati. Si prega di notare che la registrazione delle ricerche eseguite da quale utente è un tipo di modifica e quindi il modulo deve essere protetto.

    
risposta data 12.03.2011 - 12:18
fonte

Leggi altre domande sui tag