rest · REST API 26.500.0 Безопасность

rest 26.500.0: журнал аудита безопасности и курсорные ответы в V3

3 мин чтения Устаревших API: 3

Обновление безопасности

Закрыта уязвимость или ослабленная проверка прав. Ставить в первую очередь.

REST завёл единый журнал того, что происходит с приложениями, правами и вебхуками, а установщик переехал с SQL-батчей на миграции ядра. Публичные REST-методы не тронуты — ломается внутреннее и V3-API, так что читать этот разбор стоит тем, кто пишет свои модули поверх rest, а не тем, кто дёргает crm.deal.add.

SecurityAuditLogger: кто и что сделал с интеграциями

Новый Bitrix\Rest\Internal\Service\Security\SecurityAuditLogger пишет события установки и удаления приложений, смены прав доступа, запроса / подтверждения / отклонения scope, операций с вебхуками, действий системного пользователя и авторизаций.

Проблема, которую это закрывает, знакома любому, кто разбирал инцидент на большом портале: приложение с широкими правами стоит, вебхук существует, а кто, когда и с какими правами их завёл — восстанавливается по косвенным признакам. Теперь у этих действий есть общий журнал.

Класс лежит в Internal — подписываться на него и вызывать напрямую из прикладного кода не стоит, контракт не публичный. Но события в журнале безопасности портала теперь приходят отсюда, и это полезно знать при расследовании.

Логгер прокинут в конструкторы хендлеров приложений и вебхуков как ?SecurityAuditLogger $securityAuditLogger = null (или со значением по умолчанию), так что старые new Handler() продолжают работать.

Что сломается

  • CRestApiServer::initRequestScope() получил второй обязательный аргумент MethodDescription. Наследники, переопределяющие метод со старой сигнатурой, не встанут. Смысл изменения — scope запроса теперь считается по описанию метода, а не выводится из самого запроса.
  • Internal\Entity\Integration\Integration::setQuery() ждёт ?array вместо ?string (и поле в конструкторе тоже сменило тип). Строку больше не проглотит — молчаливой деградации не будет, будет TypeError.
  • V3\Interaction\Request\ServerRequest::getToken() исчез из паспорта API.
  • IntegrationMapper::convertFromArray() / convertToArray() удалены.

Совместимо: LoadLimiter::is(), getResetTime(), getRestTime(), registerStarting(), registerEnding() перешли на ?string-параметры — вызовы с null перестали быть сюрпризом. У команд создания входящего вебхука (AbstractCreateIncomingWebhookCommand, CreateIncomingWebhookCommand, SystemIncomingWebhookCreator::create) добавился ?string $comment = null — теперь вебхуку можно оставить подпись, зачем он заведён.

V3: курсор вместо смещения

Появились TailResponse и CursorResponseDto — ответы с курсором и флагом hasMore, плюс DtoCollection::last().

Это тот же путь, которым уже прошли crm.item.list и прочие «быстрые» списки: offset-пагинация на больших выборках заставляет базу пересчитывать пропущенные строки, и чем дальше страница, тем дороже. Курсор запоминает позицию и не платит за хвост. last() в коллекции — как раз то, из чего этот курсор берётся.

Установщик

install/db/{mysql,pgsql}/*.sql удалены, InstallDB() зовёт installMigrations(). Схема — в install/migrations/tables.php, события и агенты — в events.php / agents.php, плюс migration_config.json. Для уже установленного модуля это рефакторинг, а не новая схема: накатывать ничего не нужно.

Что делать

  • Проверьте свой код на наследование CRestApiServer и на вызовы Integration::setQuery() со строкой.
  • Если писали своё логирование установок приложений — сравните со списком событий SecurityAuditLogger, возможно, велосипед можно убрать.
  • Для новых списков в V3 сразу берите TailResponse / курсор, а не смещение.

Устаревшие и удалённые API в этой версии

Символ Статус Чем заменять
IntegrationMapper::convertFromArray() Удалено —
IntegrationMapper::convertToArray() Удалено —
V3\Interaction\Request\ServerRequest::getToken() Удалено —

Читайте дальше

rest 26.600.0 Ломающее Свежее

Rest 26.600.0: отложенный batch и Idempotency-Key в REST V3, новые правила для встроек

В `rest` 26.600.0 (сборка от 23.07.2026) 143 файла и +5143/−383 строк. В REST V3 появились отложенный batch со своей таблицей и очередью, идемпотентность по заголовку `Idempotency-Key` и перечисления, значения которых берутся из кода. Заодно переделали права на встройки и сигнатуры команд встроек. К...

1 мин
rest 26.650.0 Ломающее Свежее

Rest 26.650.0: тарифные ограничения Vibe+ и установка приложений через блокировку

`rest` 26.650.0 (сборка от 06.08.2026, 78 файлов, +3003/−371 строк) почти целиком про тарифные ограничения REST для модели монетизации Bitrix24 «Vibe+». Тарифные решения принимаются по данным модуля `bitrix24`, и на коробке без него ограничения не включаются. Часть изменений касается всех редакций:...

1 мин
voximplant 26.700.0 Ломающее Свежее

Voximplant 26.700.0: оценку качества связи убрали, у notifyAdmins() появился тип

Модуль телефонии voximplant 26.700.0 вышел в коробочный Битрикс24 11 сентября 2026 года, по данным официального канала «Битрикс24 changelog». Из карточки звонка убрали оценку качества связи вместе с её JS-событиями, у `Im::notifyAdmins()` появился тип параметра, а публичные константы `SipStatusInfor...

3 мин
ui 26.687.0 Рутинное Свежее

UI 26.687.0: триал VibePlus в облаке и дизайн чипа TintedBitrixGpt

`Bitrix\UI\Controller\InfoHelper` при активации демо сначала спрашивает у модуля bitrix24, включён ли старт VibePlus, и если да, запускает триал VibePlus вместо обычного демо тарифа. Ветка срабатывает только при подключённом модуле bitrix24 и определённой константе `BX24_HOST_NAME`. В `ui.system.chi...

1 мин
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

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

Войти