CSRF НЕ РАБОТАЕТ С JMETER

У меня возникла проблема с JMeter. Я пытаюсь провести тесты производительности с помощью расширения BlazeMeter. При выполнении некоторых запросов я получаю ошибку CSRF. Я уже пробовал извлечь токен с помощью экстрактора регулярных выражений, но он его не находит.

Я попытался создать это регулярное выражение

введите описание изображения здесь

Использование регулярных выражений для получения значений из HTML-ответов не самая лучшая идея, если токен находится в теле ответа, то наиболее очевидным выбором будет CSS Selector Extractor

И вам нужно применить экстрактор к сэмплеру, в котором токен появляется в ответе, см. Scoping Rules запись руководства пользователя

Если вам нужна более полная помощь, поделитесь хотя бы частичным ответом, где появляется токен, так мы сможем придумать правильную настройку постпроцессора.

А пока я могу лишь посоветовать ознакомиться со статьей What is CSRF & How to Load Test CSRF-Protected Websites

Обычно это происходит, когда в запросе отсутствует или неверно указан токен CSRF. Вот как вы можете решить эту проблему шаг за шагом:

1. Убедитесь, что CSRF-токен извлечен правильно

Сначала убедитесь, что вы правильно извлекаете CSRF-токен из ответов вашего приложения. Для этого можно использовать экстрактор регулярных выражений в JMeter. Вот как это делается:

  1. Добавьте экстрактор регулярных выражений в запрос, загружающий страницу, содержащую CSRF-токен.

    • Поле для проверки: Body
    • Регулярное выражение: name='csrfmiddlewaretoken' value='(.+?)'
    • Шаблон: $1$
    • Номер совпадения: 1
    • Reference Name: CSRF_TOKEN
  2. Убедитесь, что у вас есть утверждение Response Assertion для подтверждения наличия CSRF-токена в теле ответа.

2. Используйте извлеченный токен в последующих запросах

Далее необходимо использовать извлеченный CSRF-токен в последующих запросах:

  1. В HTTP-запросе, где требуется токен CSRF, добавьте токен в параметры запроса:
    • Имя: csrfmiddlewaretoken
    • Значение: ${CSRF_TOKEN}

3. Советы по отладке

  • Проверьте, правильно ли обрабатываются куки: Токены CSRF часто полагаются на куки. Убедитесь, что в план тестирования добавлен HTTP Cookie Manager для управления cookies.
  • Проверка извлечения токена: Добавьте отладочный пробник и слушатель View Results Tree, чтобы убедиться, что токен CSRF извлекается и передается правильно.
  • Перезагрузите страницу при необходимости: Иногда CSRF-токен может измениться после определенных действий (например, входа в систему). Убедитесь, что вы перезагружаете необходимые страницы, чтобы получить обновленный CSRF-токен.

4. Пример конфигурации

Вот упрощенный пример того, как может выглядеть ваш план тестирования:

  1. HTTP Request Sampler (Load Page with CSRF token)

    • URL: http://your-website.com/form-page
    • Добавьте экстрактор регулярных выражений для извлечения CSRF-токена.
  2. Отладочный пробник (Необязательно)

    • Для проверки извлеченного токена.
  3. HTTP Request Sampler (Форма отправки)

    • URL: http://your-website.com/submit-form
    • Добавьте параметры:
      • csrfmiddlewaretoken: ${CSRF_TOKEN}
      • (Другие параметры формы)
  4. Слушатели

    • Добавьте дерево результатов просмотра, чтобы увидеть детали запроса и ответа.

5. Пример конфигурации экстрактора регулярных выражений

  • Название: Извлечение CSRF-токена
  • Применить к: Основной выборке и подвыборкам
  • Поле для проверки: Тело
  • Имя ссылки: CSRF_TOKEN
  • Регулярное выражение: name='csrfmiddlewaretoken' value='(.+?)'
  • Шаблон: $1$
  • Номер матча: 1
  • Значение по умолчанию: NOT_FOUND

6. Пример HTTP-запроса с CSRF-токеном

  • Название: Отправить форму
  • URL: http://your-website.com/submit-form
  • Параметры:
    • Имя: csrfmiddlewaretoken
    • Значение: ${CSRF_TOKEN}
    • (Другие параметры формы)

Следуя этим шагам, вы сможете правильно извлекать и использовать токен CSRF в своих тестах JMeter, избегая тем самым ошибки 403 Forbidden, связанной с проверкой CSRF.

Вернуться на верх