Fileman 26.100.0: защита редактора и новый контракт PDF-просмотрщика

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

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

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

Fileman 26.100.0 закрывает несколько способов провести PHP-код и небезопасные пути через файловый менеджер и HTML-редактор. Одновременно модуль меняет компонент bitrix:pdf.viewer: кастомные шаблоны и скрипты, рассчитанные на прежнюю разметку, придётся адаптировать.

Новое

Редактор строже проверяет код, файлы и пути

Пользователь без права edit_php больше не может подставить произвольный PHP-шаблон меню. Fileman игнорирует переданное значение и сохраняет прежний путь. Для пользователя с нужным правом путь преобразуется в абсолютный и нормализуется перед записью. Та же граница появилась у сниппетов: AJAX-действие edit_snippet отклоняет PHP-код без edit_php. При переименовании категории модуль принимает только безопасное одиночное имя, а файл .content.php и кэш меняет после успешного переименования каталога.

Загрузка изображения из HTML-редактора теперь проверяет структуру массива файла, совпадение имён, разделители пути, скриптовые расширения и допустимый формат изображения. Перед копированием Fileman получает реальный путь к document root и проверяет файл через CFile::CheckImageFile().

Экранирование настроек редактора тоже стало точнее. editor_body_class и editor_body_id хранятся без предварительного HTML-кодирования и экранируются при выводе. Значения toolbar, taskbar и размеров диалога проходят CUtil::JSEscape() или приводятся к числу. Генератор PHP-кода компонентов использует EscapePHPString() вместо общего addslashes().

PDF-просмотрщик получил новый интерфейс

bitrix:pdf.viewer теперь подключает расширение fileman.pdf-viewer, которое работает поверх ui.pdfjs-viewer. В интерфейсе появились слои, аннотации, подсветка, вставка изображений, диалоги альтернативного текста и обновлённые свойства документа. Новый BX.Fileman.PdfViewer настраивает PDFViewerApplication и использует worker из /bitrix/js/ui/pdfjs/dist/pdfjs.worker.bundle.js. Пути к ресурсам больше не передаются старому шаблону компонента.

Copilot учитывает бренд и элемент привязки

CHTMLEditor::getAiBrandDisplayName(): string получает отображаемое имя Copilot через сервис модуля ui. Если модуль недоступен, метод возвращает пустую строку. Имя попадает в placeholder и подпись кнопки редактора. ShowCopilotAtTheBottom() принимает элемент, около которого нужно открыть интерфейс, и возвращает результат показа. При внешней точке привязки редактор восстанавливает прокрутку, пока пользователь сам не начнёт взаимодействовать со страницей.

Для кода, который расширяет Fileman, появились ещё три метода: CSnippets::ReplaceCategoryPathInContent() безопасно меняет путь категории в ключах $SNIPPETS, а CFileMan::IsSafeName() и CFileMan::ResolveMenuTemplatePath() проверяют имена и вычисляют путь шаблона меню. Последние два публичны по модификатору, но не вошли в паспорт публичного API версии.

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

Кастомные шаблоны bitrix:pdf.viewer, которые читают $arResult['CSS_FILES'], $arResult['JS_FILES'] или $arResult['PATH_TO_WORKER'], перестанут подключать нужные ресурсы. Компонент передаёт новый ключ $arResult['ASSETS'] и загружает PDF.js через fileman.pdf-viewer.

Из штатного шаблона исчезли ID с суффиксом компонента, включая viewer_<id> и toolbarContainer_<id>. Удалены глобальные переменные pdfJsFilePath, pdfJsPathToWorker, pdfJsViewerId, pdfJsPrintDisabled и событие PdfJsChangeSource. Проверьте копии шаблона и внешний JavaScript, который обращается к этим ID, переменным или событию.

CDiskPdfComponent::executeComponent() теперь объявляет возвращаемый тип void, а getComponentId() — string.

Наследники с несовместимыми сигнатурами получат ошибку совместимости методов PHP.

Перед обновлением найдите переопределения bitrix:pdf.viewer.

Проверьте обращения к старым точкам интеграции. Штатный шаблон можно использовать как основу для переноса своих правок на новый DOM и BX.Fileman.PdfViewer.

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

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

Подписаться

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

visualeditor 26.0.0 Заметное Свежее

Visualeditor 26.0.0: редактор HTML-страниц, который подключают своим кодом

С обновлениями пришёл новый модуль «Визуальный редактор» (`visualeditor`). Он открывает HTML-страницу сайта вместе с её стилями. Выбрали элемент, поправили текст, ссылку или картинку, и правка ложится точно в исходный файл, остальной код не переформатируется.

5 мин
superset 26.800.0 Заметное Свежее

Superset 26.800.0: поколения серверов и точные ошибки SQL

Superset 26.800.0 добавляет поколение BI-сервера и признак обязательного протокола в публичное состояние runtime. Ещё одно заметное изменение касается SQL Lab и виртуальных датасетов: ошибки пользовательского запроса теперь отделяются от недоступности BI-сервиса.

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

Socialnetwork 26.500.0: проверки прав в ленте и новый REST для комментариев

Socialnetwork 26.500.0 закрывает обходы прав в ленте, группах и чатах, добавляет REST-чтение комментариев и защищает лимит Scrum-проектов от параллельных запросов. Обновление также принудительно включает новый режим проектов и отключает компонент копирования группы.

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

Location 26.700.0: маршрут чек-инов сворачивается по геометрии карты

Карта чек-инов получила новые маркеры, кластеры и правила сворачивания маршрута. Обновление заметят пользователи мобильного учёта рабочего времени и разработчики, которые интегрируются с JS-расширениями `location.check-in` и `location.osm`.

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

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

на связи

пишет…

Можно закрыть чат и перейти на другую страницу. Когда ответ будет готов, на кнопке Домового появится отметка.

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

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

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

Войти