Comment se protéger contre les CSRF lors de l'utilisation de Backbone.js pour publier des données?
Backbone.js gère l'affichage des données au serveur sous le capot, donc il n'est pas facile d'insérer un jeton CSRF dans la charge utile. Comment puis-je protéger mon site contre les CSRF dans cette situation?
Dans cette SORTE de réponse: https://stackoverflow.com/a/10386412/954376, la suggestion est de vérifier que les x-Requested-En-tête pour être XMLHTTPRequest. Est-ce suffisant pour bloquer tous les CSRF tente?
Dans Django docs, il est suggéré d'ajouter un jeton CSRF dans un autre en-tête personnalisé à chaque requête AJAX: https://docs.djangoproject.com/en/1.5/ref/contrib/csrf/#ajax. Est-ce nécessaire?
Je comprends, si l'attaque utilise le formulaire masqué, je suis sûr par tout en assurant la demande est de XMLHTTPRequest. Mais est-il une attaque CSRF trucs qui peuvent falsifier les en-tête?
OriginalL'auteur NeoWang | 2013-08-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un préfiltre pour ajouter le pion à toutes les demandes:
Vous devrez peut-être ajouter de la logique supplémentaire si vous n'avez pas toujours envoyer le jeton.
Ceux qui utilisent des bugs dans les plugins comme Flash. Vous ne pouvez pas falsifier les en-tête dans un normal CSRF de la situation, il est donc très bien sans bugs. Vous pouvez envisager de qui toujours juste l'envoi et la vérification de jeton est beaucoup plus simple que parfois la vérification de jeton et parfois vérification de l'en-tête.
OriginalL'auteur Esailija
La configuration d'un CSRF token pour tous jQuery.les appels ajax:
Réglage du jeton que vous venez pour la colonne vertébrale en substituant la colonne vertébrale.sync:
EDIT: correction d'une faute Kadam points dans les commentaires
X-CSRFToken
. Il y a un éclat supplémentaire à votre première suggestion que le brise.l'orthographe correcte de l'en-tête de la clé dépend du serveur. Par exemple, Express 3 utilise
X-CSRF-Token
. expressjs.com/3x/api.html#csrfOriginalL'auteur Pasi Jokinen
Voici une version mise à jour, basée à Django 1.7 (à l'aide de jQuery cookie plugin)
OriginalL'auteur Akhorus
Je sais que c'est un peu vieille question, mais je vais laisser un lien vers le dépôt github de la DMLA module juste pour cela:
https://github.com/kuc2477/backbone.csrf.git (disclaimer: je suis l'auteur du module)
OriginalL'auteur June