sender · Email-маркетинг 26.300.0 Безопасность

sender 26.300.0: тестер писем больше не пускает произвольные ключи в компилятор

4 мин чтения

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

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

Главное в этом релизе — не новые классы, а два фильтра. AJAX тестовой отправки письма перестал складывать в конфигурацию сообщения всё, что пришло в запросе, а редирект по ссылке из рассылки перестал таскать внутренний параметр на внешние домены. Обе правки маленькие, обе — про то, что раньше можно было сделать с портала снаружи.

Тестер писем: array_intersect_key вместо доверия запросу

В sender.message.tester/ajax.php данные из клиентского запроса уходили в setConfigurationData() целиком. Конфигурация сообщения — это то, из чего собирается письмо, и часть её ключей интерпретируется как код. Комментарий, который разработчики оставили в новом коде, называет вещи своими именами: ключи вроде BODY_PHP не должны попадать в компилятор писем из клиентского запроса.

Теперь перед передачей стоит белый список:

        $letter->getMessage()->setConfigurationData(
    array_intersect_key($messageData, $allowedOptionCodes)
);

    

Всё, чего нет среди кодов опций конфигурации, отбрасывается. Если вы держите sender на портале с доступом у нескольких сотрудников — это обновление стоит поставить не откладывая.

Conversion-параметр перестал утекать на внешние домены

Новый класс Bitrix\Sender\Internals\ExternalUrlSanitizer вешается на событие main:OnMailEventMailClickRedirect и снимает query-параметр bx_sender_conversion_id с URL, если редирект ведёт на внешний хост. Внутри портала параметр нужен — по нему считается конверсия. За его пределами это просто идентификатор из вашей рассылки, который уезжает в чужую аналитику и реферер.

Отдельно стоит посмотреть, как санитайзер определяет «свой» домен: он берёт BX24_HOST_NAME, опцию main.server_name и SiteDomainTable — и не смотрит в HTTP_HOST. Это защита от подмены заголовка Host: иначе достаточно было бы прислать чужой Host, чтобы внешняя ссылка считалась своей и параметр уехал вместе с переходом.

Заодно литерал bx_sender_conversion_id из ConversionHandler::onBeforeProlog() заменён на константу ExternalUrlSanitizer::CONVERSION_PARAM — теперь имя параметра в одном месте.

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

  • Bitrix\Sender\SenderNotifySchema. Схема IM-уведомлений обёрнута в ключи NAME и NOTIFY; раньше group_prepared лежал прямо под sender. Если вы разбирали эту схему или дополняли её своими типами — путь изменился.
  • VK-реклама режется по региону. TransportVk и TransportLookalikeVk попадают в список транспортов только при Bitrix24\Service::isAdVisibleInRegion(), а Message\Adapter::isAvailable() для кодов CODE_ADS_VK / CODE_ADS_LOOKALIKE_VK возвращает false там, где регион эти объявления скрывает. Код, который жёстко предполагал наличие VK-транспорта, получит пустоту вместо ошибки — проверяйте isAvailable().
  • Тестер писем может начать «терять» ключи, если вы дописывали в него свои — теперь они должны быть зарегистрированы как коды опций конфигурации.

Установщик переехал на миграции

InstallDB / UnInstallDB больше не гоняют SQL-батчи: удалены install/db/{mysql,pgsql}/install.sql, install_ft.sql, uninstall.sql, а схема описана в install/migrations/tables.php (включая fulltext-индекс IXF_B_SENDER_MAILING_CHAIN_1 на SEARCH_CONTENT). События — в events.php, агент AccessInstaller::installAgent() и степпер SetFileInfoStepper — в agents.php.

Новых таблиц и полей в релизе нет: схема переехала один в один. На работающем портале мигрировать нечего. Подробнее про механику — в отдельном разборе UpdateSystem\Migration.

Что делать

  1. Обновиться, если sender используется — из-за фильтра тестера.
  2. Проверить свой код на разбор SenderNotifySchema.
  3. Если строите список каналов рассылки динамически — опираться на Adapter::isAvailable(), а не на константы кодов.

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

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 мин
ui 26.675.0 Ломающее Свежее

UI 26.675.0: ui.actionpanel переехал в бандл, а rich_text по-новому обходится с квадратными скобками

Модуль ui 26.675.0 собран 26 августа 2026. Из PHP поменялись `Converter` и `Whitelist` в `Bitrix\UI\Format\BBCode`, и пользовательские поля типа `rich_text` теперь иначе сохраняют и индексируют текст с квадратными скобками. На фронтенде старую панель групповых действий `ui.actionpanel` перевели на б...

4 мин
ui 26.650.0 Рутинное Свежее

UI 26.650.0: клавиатура в пикере реакций и аудио во вьюере

Релиз на 2 МБ, из PHP в нём только `config.php` расширений и номер версии. Пикером реакций теперь можно управлять с клавиатуры (роль `menu`, стрелки, Escape), у него появились опции `priorityReaction` и `contextAction` и методы `focus()` и `destroy()`. Если пикер привязан к кнопке, ссылке или элемен...

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

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

на связи

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

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

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

Войти