Анализ механизма обновления CSRF-токена и оценка его безопасности

В процессе изучения работы метода BX.ajax.runAction был выявлен механизм обработки недействительных CSRF-токенов. Система использует поле error.customData.csrf для автоматического получения нового токена при обнаружении ошибки типа invalid_csrf.

Исходная реализация обработки

В оригинальном коде реализована следующая логика:

  • При получении ошибки invalid_csrf проверяется наличие error.customData.csrf
  • Новый токен сохраняется в BX.message под ключом bitrix_sessid
  • Заголовок X-Bitrix-Csrf-Token обновляется в конфигурации запроса
  • Запрос повторяется с обновленными данными

Воспроизведенная реализация

На основе этого механизма была создана аналогичная функция:

  • Формирование FormData из переданных параметров
  • Выполнение POST-запроса к /bitrix/services/main/ajax.php
  • Анализ ответа на наличие ошибки invalid_csrf
  • Рекурсивный повтор запроса с новым CSRF-токеном при необходимости
  • Возврат результата или обработка ошибки

Вопрос безопасности

Ключевой вопрос заключается в том, не создает ли использование error.customData.csrf уязвимостей в системе безопасности. Этот механизм предполагает, что сервер доверяет клиенту и предоставляет новый валидный токен в ответ на недействительный, что требует тщательной оценки с точки зрения защиты от CSRF-атак.