2011-01-19 16 views
9

Quali sono esattamente i rischi a cui mi sto esponendo se non utilizzo i token csrf nelle mie forme? Non sto cercando etichette semplici o nomi dei rischi, perché questi possono essere fonte di confusione. Devo capire cosa può fare esattamente un attaccante e solo in quali circostanze possono farlo, in un inglese semplice.Modulo senza token CSRF: quali sono i rischi

+8

Sembra che qualcuno stia cercando di saperne di più sulla sicurezza delle app. – park

risposta

9

Una vulnerabilità di CSRF è quella che consente a un utente malintenzionato (o sito Web) di fare in modo che un utente ignaro non esegua un'azione sul proprio sito.

Alcuni esempi del mondo reale sarebbero cose come se si consentisse a un utente di eliminare un account su GET anziché su POST, qualcuno potrebbe pubblicare il seguente commento sul proprio sito (supponendo che il sito abbia modo di postare commenti o altro input, ecc.)

Ho pensato di fare un commento sul tuo sito. Dai un'occhiata a questa immagine fantastica!
< img src = 'http: //example.com/delete_my_account.php"/ >

E ora ogni volta che un loggato carichi utente che la pagina, il loro account saranno eliminati se è stato fatto sopra. POST invece di GET, qualcuno potrebbe creare un modulo e indurre gli utenti a inviarlo e lo stesso risultato sarebbe accaduto.Peso se hai usato un token CSRF, questo non sarebbe possibile

Un altro esempio potrebbe essere un sito esterno è possibile creare un modulo con i POST sul tuo sito ed eseguire un'azione indesiderata. Supponiamo che il tuo sito abbia un carrello che non utilizza token CSRF. Un sito dannoso potrebbe creare un modulo con un tton che dice "Clicca qui per registrarti", ma in realtà ordina 1000 di qualcosa dal tuo sito. Se un utente che ha effettuato l'accesso dal tuo sito visita questo sito dannoso e fa clic sul pulsante, riceverà una bella sorpresa nella posta.

Ovviamente ci sono altri casi, questi sono solo alcuni esempi. Una ricerca su Google dovrebbe mostrare un sacco di articoli e tutorial, molti dei quali probabilmente avranno altri esempi. Lo Wikipedia page ha anche alcuni esempi che potresti trovare interessanti.

L'idea principale degli esempi è che qualcuno può ingannare il tuo sito eseguendo un'azione come se provenisse da un utente, quando in realtà l'utente non era a conoscenza che stava accadendo o non voleva che accadesse. Se hai qualche tipo di azione sul tuo sito che è distruttiva (ad esempio puoi cancellare cose da un account utente, disconnettersi da un utente, ecc.) O critica (cioè trattare con denaro) dovresti probabilmente usare i token CSRF. Se il tuo sito è solo un album di foto per amici, ecc. Allora probabilmente non dovrai preoccuparti dei token CSRF (anche se è sempre utile esercitarsi quando costruisci un sito che ne ha bisogno).

A meno che non si aggiunga un token per garantire che una richiesta provenga da un modulo presentato intenzionalmente dall'utente all'utente, non si ha realmente un modo per sapere se l'utente ha intenzione di eseguire l'azione.

Pertanto, si desidera sempre utilizzare un token univoco su ogni modulo generato da POST e convalidare qualsiasi richiesta POST sul proprio sito con un token valido per l'utente corrente. Assicurati anche di espirare i token dopo un po 'di tempo in modo che non durino per sempre.

1

Ti consiglio di leggere questo eccellente articolo che spiega cosa è CSRF e come potresti proteggerti meglio contro di esso.

+0

samquo l'articolo spiega che o sono stupido: $ Ha una sezione "Esempio di exploit" – Alfred

+1

@samquo probabilmente il tuo sito non verrà attaccato da questo. Ad esempio, se Gmail non ha una protezione CSRF quando il cookie è impostato, è possibile che abbia inviato e-mail utilizzando il mio account. È tutto davvero nell'articolo. Dovresti leggerlo? – Alfred

+0

@samquo probabilmente il tuo sito non verrà attaccato da questo. Ad esempio, se Gmail non ha una protezione CSRF quando il cookie è impostato su SET (ho effettuato l'accesso), potrebbero inviare e-mail utilizzando il mio account. È tutto davvero nell'articolo. Dovresti leggerlo? – Alfred

Problemi correlati