sign 26.800.0 Безопасность

Sign 26.800.0: закрыли доступ к чужим документам, к приглашению на подпись можно дописать текст

2 мин чтения Устаревших API: 1
Узнавайте о ломающих изменениях Битрикса раньше, чем они доедут до прода: свежие разборы — в канале @bxmax_updates

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

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

Sign 26.800.0 для коробочного Битрикс24 закрывает несколько дыр в проверке прав: часть AJAX-экшенов модуля не проверяла, есть ли у пользователя доступ к конкретному документу, группе или участнику. Если на портале подписывают документы, с сотрудниками или с клиентами, обновляйтесь. Из нового — текст отправителя в приглашении, пакетная загрузка до 30 файлов и модификаторы плейсхолдеров.

Новое

Допишите сотруднику пару слов к приглашению

К приглашению на подпись можно приложить свой текст до 2000 символов. Сотрудник увидит его отдельным блоком «Сообщение по документу» под стандартной фразой, и в карточке чата, и в тексте приглашения. Текст задаётся в мастере отправки, а ещё:

  • в REST sign.b2e.document.send полем fields.message;
  • в роботе «Подписать документ с сотрудником», в новом свойстве «Сообщение по документу». Переменные бизнес-процесса в нём работают, лимит в 2000 символов проверяется после подстановки;
  • для группы документов: один текст пишется сразу во все документы пачки. Если хоть один из них недоступен или уже ушёл на подпись, текст не сохранится ни в одном.

Текст можно менять, пока документ в статусе new или uploaded, то есть до отправки. Перед показом сервер обезвреживает разметку: упоминания, BB-коды и Markdown из текста не сработают, ссылки http(s) останутся ссылками. Для этого внутрь разметки вставляются невидимые символы U+200B и U+FEFF.

Функция включена во всех регионах, кроме by. Выключить её можно опцией модуля:

        <?php declare(strict_types=1);

use Bitrix\Main\Loader;
use Bitrix\Sign\Config\Feature;

Loader::requireModule('sign');

$feature = Feature::instance();
$feature->disableOption(Feature::SIGN_DOCUMENT_MESSAGE_ENABLED_OPTION);

var_dump($feature->isDocumentMessageEnabled()); // bool(false)

    

Когда функция выключена, REST пропускает fields.message как неизвестный ключ.

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

Загружайте документы пачкой

В мастере кадрового документа появилась загрузка до 30 файлов за раз, всего до 200 МБ. На каждый файл создаётся отдельный документ, и все они попадают в одну группу. Опция is_multi_document_loading_enabled теперь по умолчанию 'Y', поэтому кнопка появится везде, где включена групповая отправка, кроме режима шаблонов. Чтобы её убрать, поставьте опции 'N'. Предел объёма пачки задаёт опция max_upload_batch_total_size_kb.

Бланки уходят в сервис подписи в фоне, цепочкой агентов, и за один запуск агентов на весь портал отправляется один бланк. Пачке из 30 файлов нужно 30 запусков, и пока бланк документа не отправлен, документ стоит в статусе new.

Удаляйте поля и собирайте коды с модификаторами

В панели плейсхолдеров можно удалить поле профиля сотрудника или дополнительное поле участника. Удаляется само пользовательское поле через CUserTypeEntity::Delete(), вместе со значениями у всех сотрудников, так что проверьте, у каких ролей есть права на удаление полей. Стандартные поля юрданных удалить нельзя.

Панель хранит 20 последних скопированных кодов каждого пользователя. К коду поля добавились модификаторы: параметры пишутся после тильды и перечисляются через запятую.

        {КОД_ПОЛЯ~Case=1}                    ФИО в дательном падеже (только регион ru)
{КОД_ПОЛЯ~j F Y}                     дата с месяцем словом
{КОД_ПОЛЯ~format=National}           телефон в национальном формате
{КОД_ПОЛЯ~Case=1,letterCase=upper}   дательный падеж заглавными буквами

    

Модификаторы разбиты на семь групп, от падежа и формата ФИО до адреса и регистра букв. Код собирает сама панель, руками его писать не обязательно.

Что закрыли

  • Сохранение подписи и печати компании и обновление номера документа принимали ID любого документа. Теперь проверяется право на редактирование именно этого документа.
  • Стадию участника отдавали по его ID без проверки прав, а сейчас её получат только сам участник и те, кто может читать документ.
  • Действия над участником по uid (удаление, канал связи, печать) проверяли общее право без привязки к его документу. Теперь документ находится через участника, а если не нашёлся, это отказ.
  • Черновики группы документов отдавались по ID группы любому, у кого есть общее право на кадровые документы.

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

GroupService::getDraftDocumentList() удалён

Черновики группы теперь собираются из двух вызовов:

        <?php declare(strict_types=1);

use Bitrix\Main\Loader;
use Bitrix\Sign\Service\Container;

Loader::requireModule('sign');

$groupService = Container::instance()->getDocumentGroupService();
$drafts = $groupService->filterDraft($groupService->getDocumentList($groupId));

    

У getDocumentList() появился необязательный ?int $limit, без него лимит прежний, 30 документов.

Передавайте зависимости операций по именам

В конструкторы Operation\Member\CreateMembers ($reminderType), Operation\Document\Template\CreateDocumentFromTemplate и Operation\Document\Template\Send ($inviteMessage) новые параметры вставили перед необязательными зависимостями. Если вы передавали сервисы и репозитории по позиции, они уедут в чужой параметр. С именованными аргументами этого не случится, а текст приглашения передаётся одной строкой:

        <?php declare(strict_types=1);

use Bitrix\Main\Loader;
use Bitrix\Sign\Operation\Document\Template\Send;
use Bitrix\Sign\Service\Container;

Loader::requireModule('sign');

$template = Container::instance()->getDocumentTemplateRepository()->getById($templateId);

if ($template !== null) {
    $result = (new Send(
        template: $template,
        responsibleUserId: $responsibleId,
        inviteMessage: 'Подпишите до пятницы, вопросы задавайте в отделе кадров',
    ))->launch();
}

    

Групповые экшены отказывают целиком

sign.api_v1.b2e.document.group.configure, getFillAndStartProgress и documentList теперь проверяют каждый документ группы. Один недоступный документ даёт отказ на всю группу (HTTP 401, код ошибки invalid_authentication). Тот же ответ придёт, если в группе больше 30 документов или группа пустая и чужая. Раньше configure и getFillAndStartProgress пропускали недоступные документы и работали с остальными.

getFillAndStartProgress для пустой группы возвращает ошибку NOTHING_TO_PROCESS вместо completed: true. attach работает, только если и группа, и документ созданы текущим пользователем. sign.api_v1.document.member.loadStage отвечает тем же отказом с invalid_authentication, если участник не найден или прав на него нет. Раньше для несуществующего участника он отдавал пустой массив. Если ваш интерфейс построен на этих экшенах, научите его показывать отказ.

БД

В b_sign_document появилась колонка INVITE_MESSAGE (text, nullable). ORM-поле кодирует эмодзи через Emoji::encode(), чтобы они пережили соединение в utf8mb3. Прямым SQL вы увидите их в виде :f09f918d:, а через Bitrix\Sign\Internal\DocumentTable получите обычный текст.

Мелочи и находки

  • Частота напоминаний больше не сбрасывается, когда мастер пересоздаёт стороны документа. В копиях шаблонов, где подписанты заданы только отделами, она тоже сохраняется.
  • Сохранение и удаление ролей в настройках прав ждёт блокировку до 3 секунд, а если так её и не получило, бросает SqlQueryException.

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

Символ Статус Чем заменять
Bitrix\Sign\Service\Sign\Document\GroupService::getDraftDocumentList() Удалено Bitrix\Sign\Service\Sign\Document\GroupService::filterDraft()

Новая версия вышла — разбор уже в Telegram

В канале @bxmax_updates публикуем каждый свежий разбор: что сломается, что устарело и что появилось в API. Узнаете до того, как обновите прод.

Подписаться

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

sign 26.600.0 Безопасность Свежее

Sign 26.450.0–26.600.0: IDOR в AccessCheck, установщик на миграциях и папки в сейфе компании

Версии 26.450.0, 26.500.0 и 26.600.0 модуля sign («Подписание документов») вышли в коробочный Битрикс24 одним днём, 11 сентября 2026 года, так указано в официальном канале «Битрикс24 changelog». Срочнее всего 26.500.0, которая закрывает IDOR в фильтре `AccessCheck` и заодно переводит установщик на м…

5 мин
sign 26.700.0 Безопасность Свежее

Sign 26.700.0: чужие группы подписантов закрыли проверкой доступа, подписания можно аннулировать

Модуль «Подписание документов» (sign) версии 26.700.0 вышел в коробочный Битрикс24 17 сентября 2026 года, так указано в официальном канале «Битрикс24 changelog». В релизе закрыли утечку состава чужих групп подписантов и документов, добавили проверки доступа к повторной отправке и выпустили аннулиров…

4 мин
socialnetwork 26.200.0 Безопасность Свежее

Socialnetwork 26.200.0: XSS в заявках и списке участников, копирование проекта по праву редактирования и курсор в log.blogpost.get

Socialnetwork 26.200.0 закрывает XSS в списке участников проекта и в заявках в группы, подмену ссылок через название группы и утечку задач в контекст AI. Копировать проект теперь можно только с правом на редактирование. Администраторам, у которых стояли 26.100.0 или 26.150.0, стоит проверить права с…

2 мин
search 26.100.0 Ломающее Свежее

Search 26.0.0–26.100.0: новые атрибуты Sphinx, переиндексация из консоли и исправленная проверка прав

Модуль поиска обновился сразу на две версии: 25.200.0 → 26.0.0 → 26.100.0. Без правки sphinx.conf индексация на Sphinx перестанет работать, а у встроенного движка и FULLTEXT MySQL/PostgreSQL, судя по коду, заголовки новых записей больше не попадают в индексируемый текст. В 26.100.0 закрыли пропуск п…

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

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

на связи

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

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

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

Войти