Анализ механизма обновления 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-атак.