L' csrf_meta_tag
inserts de ce qui est essentiellement une signature numérique dans la page, agissant à titre de vérification que les demandes à venir dans le serveur d'application sont, en fait, de bien des utilisateurs connectés. Cela aide à prévenir le cross-site scripting (un script sur une page totalement indépendante de tir requêtes-à-dire, GMail, alors que vous êtes connecté à votre compte GMail dans un autre onglet).
Je suppose que pour clarifier, l' csrf_meta_tag
lui-même ne doit pas empêcher une autre page du coup d'envoi de demandes de votre compte GMail (ou de tout autre service est la cible de l'attaque), mais la "signature numérique" dans l' csrf_meta_tag
est utilisé pour vérifier la validité de ces demandes. Requêtes non valides (c'est à dire à partir de cross-site scripting tentatives) d'échec de la validation, et sont donc rejetées.
Pour le dire d'une autre façon, à partir de l'attaquant du point de vue:
Avant d' csrf_meta_tags
existé (ils ne sont pas l'apanage des Rails par tous les moyens, la réussite de cross-site scripting attaques permis à un site malveillant afin de soumettre des données à une application web d'une manière qui en fait la demande apparaître comme si il se fait sur le compte de l'utilisateur. Donc, disons que vous êtes un administrateur sur un service web, et dans un onglet du navigateur que vous êtes connecté dans le panneau d'admin pour ce service. Si un site malveillant ouvrir dans un autre onglet ciblé votre service pour l'attaque, le site malveillant pourrait être en mesure d'exécuter des scripts d'admin demandes, telles que le dumping liste des utilisateurs de la base de données, le vol d'autres données sensibles ou potentiellement blesser, d'endommager ou de détruire les données contenues dans le service, tout en apparaissant (à partir du serveur de point de vue) pour être valide les demandes de l'administration eux-mêmes. L' csrf_meta_tag
est une façon de signer les demandes, et d'aider à contrer ces tentatives de succès.
Il y a bien des explications plus détaillées sont disponibles ici.
Il serait également éducatif pour faire une "afficher la source" sur l'un de vos Rails généré par pages, et vous verrez ce que le CSRF balise ressemble.