Protezione CSRF per richieste, azioni, ricerche o commenti non autenticati?

4

Ho seguito l'esempio del trasferimento di fondi CSRF da una banca in cui l'utente ha effettuato l'accesso. Analogamente, ho esaminato CSRF in caso di aggiornamento della posta elettronica. Penso di averlo capito ma non sono abbastanza sicuro che si estenda anche a richieste / moduli non autenticati. Ora sto cercando di capire l'impatto della CSRF in particolare in riferimento al contesto sottostante.

Supponiamo che un sito di shopping in cui sia gli utenti autenticati che quelli non autenticati possano navigare e fare acquisti. Immagina uno scenario in cui un utente non autenticato naviga e aggiunge un articolo al suo carrello (ancora non autenticato). Successivamente decide di effettuare il checkout e viene reindirizzato alla pagina di checkout senza effettuare l'accesso (l'accesso viene inoltrato all'utente Guest da utente non autenticato o qualcosa di simile). L'utente immette le sue informazioni personali (su SSL) come e-mail, indirizzo, telefono, informazioni sulla carta di credito , ecc. Il suo acquisto è completo e lui chiude l'applicazione. È in grado di tracciare / aggiornare l'ordine utilizzando il link inviato alla sua email o al numero d'ordine.

  1. Poiché l'utente non può / potrebbe mai autenticare in questa applicazione, tutti i moduli / richieste devono ancora essere protetti contro CSRF? In caso contrario, in che modo è necessario implementare la protezione CSRF?

  2. Inoltre le ricerche dovrebbero essere protette contro CSRF per gli utenti registrati e non autenticati? Sarebbe bello se tu potessi rispondere per entrambi. E i commenti dei visitatori (non registrati)?

  3. I controlli referral sono necessari anche dopo l'utilizzo dei token per la protezione CSRF? Non credo, assicurandomi ancora. (Non particolarmente legato allo scenario sopra).

  4. Quanto è importante accedere a CSRF per i siti di e-commerce?

Fammi sapere se potrei aver perso qualcosa qui, sto ancora cercando di comprendere appieno CSRF, il suo impatto e i rischi associati in vari scenari.

P.S. Alcuni scanner lanciano CSRF ad ogni sottomissione di moduli senza token casuali o controlli referer.

    
posta Sanchit Sharma 13.04.2015 - 12:18
fonte

2 risposte

4

1.Since the user is/might never authenticate in this application, do All forms/requests still need to be protected against CSRF? If not, in what case CSRF protection need to be implemented?

Se l'utente ha una sorta di stato di sessione riservata con l'applicazione, allora CSRF è raccomandato.

Potresti voler proteggere contro CSRF per aggiungere prodotti al carrello. Tuttavia, se non lo fai, potresti trovare un rischio accettabile invece di mostrare all'utente il contenuto del carrello e chiedere loro di confermare prima di procedere al checkout. In questo modo sarebbero a conoscenza se qualcosa fosse stato cambiato nel loro paniere prima di procedere al pagamento. Naturalmente, il modulo di conferma stesso dovrebbe avere la protezione CSRF e dovrebbe prendere il resto dello stato di checkout dal modulo visualizzato, piuttosto che la sessione in quanto potrebbe essere ancora suscettibile di attacchi mentre la pagina viene visualizzata all'utente.

2.Additionally should searches be be protected against CSRF for logged in vs unauthenticated users? It would be great if you could answer for both. How about comments by visitors(not logged in)?

Devi solo proteggere le richieste "non sicure". Cioè, azioni sulla tua applicazione che cambiano stato. Vedi RFC 7231 per i dettagli sulle richieste sicure. Le richieste non sicure vengono in genere implementate tramite il metodo POST, pertanto è necessario concentrarsi sulla protezione di tutte le richieste POST anziché sulle richieste GET. Questo presuppone che tutte le richieste non sicure siano POST (dovrebbero essere se implementate correttamente).

3.Are referer checks required even after Tokens are used for CSRF Protection? I don't think so, still making sure.(Not particularly related to above scenario).

No, la protezione CSRF basata su token sostituisce la forma più debole di protezione di riferimento.

How important is Login CSRF for E-commerce websites?

Molto importante. Non vuoi rendere il tuo sito vulnerabile agli aggressori che inviano o modificano ordini, dettagli personali o password (in particolare se consentono l'accesso ai dettagli della carta). Anche senza autenticazione, devi comunque proteggere la sessione dell'utente corrente mentre effettua l'ordine.

    
risposta data 13.04.2015 - 13:03
fonte
0

Mentre la risposta di @ SilverlightFox alla domanda due è corretta, non è solo la modifica di stato a cui protegge un token CSRF. Gli attacchi temporali tra domini diversi potrebbero rivelare informazioni sensibili all'interno dell'indice di ricerca (vedi link per ulteriori informazioni).

Ecco perché è essenziale proteggere anche la ricerca con un token CSRF.

    
risposta data 19.09.2015 - 02:23
fonte

Leggi altre domande sui tag