Comme le dit le long titre.
J'ai créé une API pour appeler depuis une application Vue.js avec Spring Boot,
Il a été décidé de réaliser un test de charge de cette API.
J'utilise JMeter pour créer un scénario, mais puisque j'utilise des mesures CSRF en utilisant le CookieCsrfTokenRepository de Spring Security.
XSRF-TOKEN en tant que jeton CSRFX-XSRF-TOKEN lors de l'appel d'une API en utilisant POSTC'est pourquoi nous devions faire cela dans le scénario.
Seule l'image ressemble à ceci.
| url | Méthode HTTP | Aperçu |
|---|---|---|
| /login | POST | ID/Envoyer le mot de passe pour vous connecter Une fois la connexion réussie XSRF-TOKENLe cookie est donnéNon soumis au contrôle CSRF |
| /orders | POST | Enregistrer une commande Cible de contrôle CSRF |
La réponse de / login contiendra le cookie de XSRF-TOKEN, donc il sera extrait.
Pour le moment, en regardant la réponse de / login dans DevTools, cela ressemble à ceci.

Les appels à / login sont définis dans l'échantillonneur HTTP Request. (Détails omis)
Après avoir exécuté cet échantillonneur, utilisez "Regular Expression Extraction" pour obtenir un jeton CSRF.
HTTP Request dans / login et faites un clic droit→Post Processors → Regular Expression Extractor`
Est-ce là le point?
Dans les scénarios suivants, vous pouvez spécifier $ {xsrf_token} pour résoudre la valeur extraite de la variable.
Puisque «/ orders» est soumis à une vérification CSRF, il est nécessaire de définir l'en-tête «X-XSRF-TOKEN» au moment de l'appel.
Les appels à / orders sont définis dans l'échantillonneur HTTP Request. (Détails omis)
Lors de l'exécution de cet échantillonneur, utilisez le HTTP Header Manager pour définir l'en-tête X-XSRF-TOKEN.
HTTP Request dans / orders et faites un clic droit→Config Element → HTTP Header Manager`
Le $ {xsrf_token} obtenu précédemment est défini comme en-tête X-XSRF-TOKEN.
Avec les paramètres ci-dessus, vous pouvez passer les mesures CSRF. Si vous êtes nouveau sur JMeter, vous ne pouvez pas immédiatement penser à une si petite application. Je pensais que ce serait ennuyeux (c'est mon expérience inconnue), alors je l'ai écrit.
J'ai évoqué ce qui suit. Merci beaucoup.
https://www.blazemeter.com/blog/how-load-test-csrf-protected-web-sites