Модуль реализует функционал массовой рассылки сообщений в Bitrix24 с поддержкой:
Вложений,
Форматирования,
Отправки от имени другого пользователя с запросом доступа
Персонификацией сообщений (переменные #NAME#, #LAST_NAME#, #SECOND_NAME#).
- IDOR на вложениях, высокая критичность (components/masspersonalmessage.sender/class.php, handleSendAction): проверка MODULE_ID файла общая для всех пользователей модуля, поэтому пользователь с правом access_module мог перебором последовательных ID (attachments=[N]) прикрепить к своей рассылке файл, загруженный другим пользователем модуля, и получить его содержимое. Теперь при загрузке файла (handleFileUpload) его владелец фиксируется в сессии пользователя; при отправке (handleSendAction) принимаются только файлы, загруженные текущим пользователем в этой же сессии.
- Неверное поле в проверке владельца при отзыве доступа (handleRevokeAccess): отозвать выданное разрешение на отправку от своего имени мог только исходный запрашивающий (UF_KMPM_USER_ID), а не владелец идентичности (UF_KMPM_REQUESTED_USER_ID), от чьего имени разрешение выдано. В результате владелец идентичности не мог самостоятельно отозвать право, выданное им ранее. Теперь отзыв доступен обеим сторонам.
- Недостаточно строгая загрузка файлов, defense-in-depth (handleFileUpload): MFI-контроллеру передавался режим «любой файл» (allowUpload=A), а идентификатор модуля и forceMd5 брались из запроса. Заданы явный allowlist допустимых расширений, фиксированный moduleId и forceMd5=false.
- Обход аутентификации, defense-in-depth (components/masspersonalmessage.sender/class.php, executeComponent): AJAX-действия и загрузка файлов компонента проверяли только CSRF-токен (check_bitrix_sessid), но не авторизацию и право доступа к модулю — компонент полагался на то, что эту проверку уже сделала подключающая страница. Так как компонент переиспользуемый (может быть подключён на любой странице/шаблоне), проверка авторизации и права access_module перенесена внутрь самого компонента — теперь он защищён независимо от того, где подключён.
- IDOR на вложениях (components/masspersonalmessage.sender/class.php, handleSendAction): сервер проверял только существование файла по ID, но не его принадлежность модулю — пользователь с правом доступа мог прикрепить к рассылке произвольный файл из хранилища Bitrix, подобрав ID. Теперь дополнительно проверяется, что файл был загружен через виджет этого модуля (MODULE_ID = kuratovru.masspersonalmessage).
- Stored XSS (components/masspersonalmessage.sender/class.php, handleRequestAccess): имя запрашиваемого пользователя (user_name), формируемое из полей профиля NAME/LAST_NAME/SECOND_NAME, возвращалось в JSON-ответе без экранирования и вставлялось на клиенте через innerHTML. Значение user_name теперь экранируется через htmlspecialcharsbx() перед отправкой в ответе.
- Обход аутентификации (admin/access_module.php): AJAX-обработчик (add_user/delete_user) выполнялся до проверки прав администратора — любой авторизованный пользователь мог выдать или отозвать себе доступ к модулю. Проверка прав перенесена в самое начало файла и выполняется безусловно для всех действий.
- IDOR (components/masspersonalmessage.sender/class.php): обработчики одобрения/отклонения/отзыва запроса на отправку от имени не проверяли, что текущий пользователь — участник записи. Добавлена сверка текущего пользователя с полями записи перед выполнением действия.
- XSS (class.php, handleRequestAccess): requested_user_id из запроса подставлялся в JSON-ответ без приведения типа. Значение теперь приводится к (int) сразу после получения.
- XSS (templates/.default/template.php): имена пользователей (USER_NAME), формируемые из полей профиля, выводились в шаблон без экранирования. Весь пользовательский вывод теперь экранируется через htmlspecialcharsbx().
- Утечка информации (install/public/index.php): на публичной странице модуля был включён отладочный режим Bitrix (BX_DEBUG), раскрывающий детали ошибок и внутренние пути. Отладочный режим отключён.
- Страница администрирования доступа admin/access_module.php содержала короткий тег <? endif; ?> вместо <?php endif; ?>. При отключённой директиве short_open_tag это приводило к фатальной ошибке синтаксиса, и страница не открывалась.
- Компонент рассылки class.php не объявлял свойство $arResult явно, что в PHP 8.2 помечено как устаревшее создание динамического свойства. Свойство объявлено явно.
- Выполните стандартную установку модуля
- Назначьте пользователей модуля через административную панель, раздел «Сервисы» → «Массовая рассылка» → «Управление доступом».
Для покупки товара в нашем интернет-магазине выберите понравившийся товар и добавьте его в корзину. Далее перейдите в Корзину и нажмите на «Оформить заказ» или «Быстрый заказ».
Если оформляете быстрый заказ: напишите ФИО, телефон и e-mail. Вам перезвонит менеджер и уточнит условия заказа. По результатам разговора вам придет подтверждение оформления товара на почту или через СМС. Теперь останется только ждать доставки и радоваться новой покупке.
Оформление заказа в стандартном режиме выглядит следующим образом. Заполняете полностью форму по последовательным этапам: адрес, способ доставки, оплаты, данные о себе. Советуем в комментарии к заказу написать информацию, которая поможет курьеру вас найти. Нажмите кнопку «Оформить заказ».
Оплачивайте покупки удобным способом. В интернет-магазине доступно 3 варианта оплаты:
- Наличные при самовывозе или доставке курьером. Специалист свяжется с вами в день доставки, чтобы уточнить время и заранее подготовить сдачу с любой купюры. Вы подписываете товаросопроводительные документы, вносите денежные средства, получаете товар и чек.
- Безналичный расчет при самовывозе или оформлении в интернет-магазине: карты МИР. Чтобы оплатить покупку на сайте, система перенаправит вас на сервер платежной системы. Здесь нужно ввести номер карты, срок действия и имя держателя.
- Электронные системы при онлайн-заказе: ЮMoney. Для совершения покупки система перенаправит вас на страницу платежного сервиса. Здесь необходимо заполнить форму по инструкции.
- Безналичная оплата на наш расчетный счет по выставленному счету.
Экономьте время на получении заказа. В интернет-магазине доступно 4 варианта доставки:
- Электронная поставка - все необходимые сведения о лицензии, праве пользования, кодах, ключах и др. высылаются покупателю на его e-mail.
- Курьерская доставка. Когда товар будет отправлен с нашего склада, Вам придет уведомление. В день доставки с Вами заблаговременно свяжется курьер для уточнения времени и деталей доставки. Доставка производится "до двери". Осмотрите упаковку на целостность и соответствие указанной комплектации.
- Постамат. Когда заказ поступит на точку, на Ваш телефон или e-mail придет уникальный код. Заказ нужно оплатить в терминале постамата. Срок хранения — 3 дня.
- Доставка Почтой России. Когда заказ придет в отделение, на Ваш адрес придет извещение о посылке. Перед оплатой Вы можете оценить состояние коробки: вес, целостность. Вскрывать коробку самостоятельно Вы можете только после оплаты заказа. Один заказ может содержать не больше 10 позиций и его стоимость не должна превышать 100 000 р.
Дополнительная информация.
Изучите полный алгоритм продления лицензий на модули 1С-Битрикс: Маркетплейс, включая активацию льготных купонов. Мы детально разбираем все условия: обязательный 30-дневный срок для сохранения максимальной выгоды, пропорциональное ценообразование (12,5%, 25%, 50% от цены модуля) и ограничение по минимальной сумме в 500 рублей. Этот гайд поможет вам эффективно планировать бюджет и гарантировать актуальность вашего проекта.