Comment extraire et de réutiliser le jeton CSRF à l'aide de Facteur Reste Client
Je suis en utilisant le Facteur de Repos client pour frapper le reste des services. Je reçois le message d'erreur suivant lorsque j'essaie d'exécuter le reste de Postier client.
HTTP Status 403 - Cross-site request forgery verification failed. Request aborted.
Il semble que le reste services sont garantis par la mise en œuvre de jeton CSRF. Quelqu'un a une idée sur la façon d'extraire le jeton CSRF et de la réutiliser pour les demandes à venir?
- Double Possible de Comment puis-je envoyer printemps jeton csrf de Facteur reste client?
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs façons de protéger contre les CSRF dans une application. Selon le type de protection de vos services, vous aurez à faire des choses légèrement différentes, et il peut être relativement difficile.
Probablement le plus bien connu de la protection est à l'aide de jetons de synchroniseur, dans ce cas, vous devrez télécharger la page d'abord, lire le jeton et passer dans la suite de la demande, essentiellement l'émulation d'un utilisateur réel. Comme synchroniseur les jetons sont stateful (nécessite l'état du serveur sous la forme d'une session d'utilisateur) et votre cas d'utilisation est un service RESTful, je suppose que ce n'est pas la méthode mise en œuvre.
Une autre protection, plus approprié pour les services peut avoir une certaine variation de double affichage. Dans ce cas, en fonction de la mise en œuvre, vous aurez probablement à renvoyer la même valeur dans un cookie et un en-tête de requête, plus probablement.
Une autre méthode que l'utilisation des services peut être chiffré jetons, qui, de votre point de vue est similaire à synchroniseur jetons (mais apatrides).
Encore un autre (d'ailleurs beaucoup moins sûr) méthode peut être tout simplement interroge la source et/ou l'en-tête d'origine dans les demandes. Dans ce cas vous avez juste à ajouter les en-têtes de requête.
Je vous recommande d'observer avec un proxy comme Fiddler sur Windows ou quelque chose comme ZAP Proxy sur Linux (ou Windows) quelle méthode le service utilise normalement, quelles valeurs d'en-tête et un nom de cookie elle exige, etc. Vous pouvez ensuite faire vos propres demandes de la bonne façon, l'envoi de jetons CSRF que vos services s'attendent à eux.
La façon la plus simple est de frapper un service de première, de sorte que nous pouvons obtenir la réponse avec le jeton CSRF. Nous pouvons utiliser ce jeton CSRF lors de l'envoi de la requête POST à nouveau. Le jeton CSRF peut être trouvé sous le
Body
de la réponse dans le POSTIER client.1) Dans Chrome/Firefox, ouvrez la console par un clic droit n'importe où et choisir "inspecter"(pour Chrome) ou "inspecter l'élément"(pour Firefox).
2) Sélectionnez l'onglet "réseau".
3) 4)
Faire une requête get ou connectez-vous d'abord alors que vous voyez la demande , pour obtenir CSRF TOKEN envoyés à partir du serveur.
5)
Dans le prochain post demande, utilisez le CSRF TOKEN de la demande précédente.