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(), а не на константы кодов.

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

security 26.200.0 Безопасность Свежее

Security 26.200.0 не ставится на маке и Windows: фатал «Cannot redeclare class» прямо в апдейтере

Обновление security 26.200.0 у нас не установилось вообще: апдейтер умирает с фаталом посреди своего скрипта. Если ваш прод на Linux — выдыхайте, вас это не касается. А вот если вы ставите обновления в локальной разработке на macOS или Windows (Docker с bind-mount проектной папки — это ровно тот слу...

4 мин
mail 26.900.0 Заметное Свежее

Mail 26.900.0: общие подписи ломают старый API, а тяжёлые вложения переезжают на Диск

Модуль mail получил один из самых жирных релизов за последнее время: 523 файла, +39 182/−3 131 строк. Внутри — три большие фичи (общие подписи, автоперенос тяжёлых вложений на Диск, избранное с AI-классификацией писем), переработанный IMAP-синк истории и три новые таблицы в БД. Если вы кастомизирова...

4 мин
location 26.300.0 Заметное Свежее

Location 26.300.0: батчевый обратный геокодинг — до 20 координат за один вызов

Релиз от 17 июня 2026 с одной, но цельной темой: в модуль `location` завезли батчевый обратный геокодинг — метод `findByCoordsList`, который превращает список координат в список локаций за один вызов сервиса. Если вы строите интеграции с картами или доставкой и до сих пор дёргали `findByCoords` в ци...

2 мин
main 26.700.0 Заметное Свежее

Main 26.700.0: в ядре появились фича-флаги

Битрикс выкатил main 26.700.0 — и это тот редкий случай, когда в ядре появляется целая новая подсистема: фича-флаги `Bitrix\Main\Config\Feature` с двумя таблицами в БД. Плюс несколько тихих поведенческих изменений, которые стоит проверить, если у вас не-UTF-8 сайт, кастомные фильтры пользователей ил...

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

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

на связи

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

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

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

Войти