Il csrf_meta_tag
inserisce nella pagina la firma digitale, che funge da verifica che le richieste che arrivano nel server delle applicazioni sono, infatti, da utenti che hanno effettuato correttamente l'accesso. Questo aiuta a prevenire lo scripting cross-site (uno script su una pagina completamente indipendente che licenzia le richieste per dire, GMail, mentre sei connesso al tuo GMail in un'altra scheda).
immagino di chiarire, il csrf_meta_tag
per sé non impedisce una pagina non correlata da sparando richieste di Gmail (o qualsiasi altro servizio che è l'obiettivo dell'attacco), ma la "firma digitale" nel csrf_meta_tag
è utilizzato per verificare la validità di tali richieste. Le richieste non valide (ad esempio dai tentativi di scripting cross-site) non sono valide per la convalida e vengono pertanto scartate.
Per dirla in un altro modo, dal punto di vista dell'attaccante:
Prima csrf_meta_tags
esistito (che non sono esclusivi di rotaie con qualsiasi mezzo), di successo attacchi cross-site scripting consentito un sito dannoso per inviare i dati a un'app Web in modo tale da far apparire la richiesta come se venisse eseguita per conto dell'utente. Supponiamo che tu sia un amministratore di un servizio Web e in una scheda del browser sei connesso al pannello di amministrazione per quel servizio. Se un sito malevolo aperto in un'altra scheda ha come obiettivo il tuo servizio per un attacco, il sito dannoso potrebbe essere in grado di eseguire script che effettuano richieste di amministrazione, come l'elenco di utenti che scaricano dal database, rubando altri dati sensibili o potenzialmente dannosi, dannosi, o distruggendo i dati contenuti nel servizio, tutti mentre appaiono (dal punto di vista del server) come richieste valide da parte dell'amministratore stesso. Il csrf_meta_tag
è un modo per firmare le richieste e aiutare a contrastare tali tentativi di successo.
C'è una spiegazione molto più dettagliata available here.
Sarebbe anche educativo per fare un "visualizza sorgente" su una delle pagine Rails-generate, e vedrete che cosa il tag CSRF assomiglia.
Permettetemi di Google che per voi http://stackoverflow.com/questions/941594/understand-rails-authenticity-token –
@MikhailNikalyukin Grazie (I pensare). Questo spiega CSRF, di cui conoscevo già le basi, ma non spiega come * i meta tag * (in contrapposizione ai campi dei moduli nascosti) possano impedirlo. Conosci la risposta a questo? – Nick