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 POST
C'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-TOKEN Le 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