Niklan.net
354 subscribers
111 photos
13 videos
5 files
399 links
Веб-разработка и Drupal.

Блог: http://niklan.net
Download Telegram
Drupal 10 не за горами! 🏔

Релиз Drupal 10 ожидается в июне. Одновременно с Drupal 10 выйдет Drupal 9.4, который будет LTS релизом (будут поддерживать чуть дольше). Это означает, что больше минорных релизов для Drupal 9 не будет!

Чтобы не засиживаться на Drupal 9, начинайте потихоньку подготавливать проекты к Drupal 10.

Для этого я подготовил руководство по обновлению Drupal 9 до Drupal 10. Вы уже сейчас можете использовать раздел подготовки собственных модулей и тем для начала уборки на проекте. 🧹 Когда выйдет Drupal 10, вам придётся править сильно меньше.

Как говорится: готовь сани летом, а зимой телегу. 🛷
Вчера вышли обновления безопасности 9.3.6 и 9.2.13

Данные релизы исправляют SA-CORE-2022-003 и SA-CORE-2022-004.

SA-CORE-2022-003: Данной проблеме подвержены сайты, в формах которых используется элемент value ('#type' => 'value'). Также убедитесь что сторонние модули не используют данный элемент. Если вы его найдёте — обновитесь.

SA-CORE-2022-004: Если используете модуль Quick Edit, то вам либо его необходимо отключить, либо обновиться до новых версий. Пользователи, у которых есть разрешение access in-place editing, в некоторых ситуациях могут просматривать сущности, доступа к которым у них нет. Напоминаю: данный модуль будет удалён в Drupal 10.
Дата релиза Drupal 10 сдвинута на 17 августа 2022.

Релиз Drupal 10 имеет 3 окна:

- 15 июня 2022. Ключевые требования должны быть завершены к 11 марта.
- 17 августа 2022. Ключевые требования должны быть завершены к 13 мая.
- 14 декабря 2022. Ключевые требования должны быть завершены к 9 сентября.

Так как уже есть понимание, что ключевые требования не будут закрыты к 11 марта, дата релиза смещена на 17 августа.

К ключевым требованиям относятся:

- Сделать стабильным модуль CKEditor 5 и объявить модуль CKEditor 4 устаревшим (задача).
- Обновить все JavaScript зависимости ядра на последние мажорные версии (задача).
- Сделать Olivero темой оформления по умолчанию для стандартного профиля установки, объявить Bartik устаревшим (задача).
- Сделать Claro административной темой по умолчанию для стандартного профиля, объявить Seven устаревшей (задача).
- Протестировать и стабилизировать работу Starterkit генератора и соответствующей возможности для тем, а также удалить все устаревшие базовые темы из ядра (задача).

Теперь у вас на целых 2 месяца, как минимум, больше на уборку проекта. 💅
Поддержку Drupal 7 продлили до 1 ноября 2023.
Сегодня состоялся патч релиз Drupal 9.3.7.

Достаточно много мелких исправлений и улучшений для патч релиза. Экспериментальный модуль CKEditor 5 получил приличное количество улучшений.
11 марта состоялся патч релиз 9.2.14.

В этом спонтанном патч релизе обновили все JavaScript зависимости ядра, а также портировали совсем немного изменений из других веток. Пишут что якобы у некоторых библиотек вышли обновления безопасности, но они не влияют на Drupal. 🤷‍♂️

По всей видимости просто забыли сделать релиз 4 марта, так как именно тогда обновили зависимости и было окно для релиза, а за день до этого вышел 9.3.7. 🥴
Вчера вышли обновления безопасности Drupal 9.3.8 и Drupal 9.2.15 исправляющие SA-CORE-2022-005.

В этих обновлениях обновлён CKEditor в котором закрыли две уязвимости, они могут быть использованы для межсайтового скриптинга и DoS атаки на пользователя.

Проблеме подвержены все сайты где активен CKEditor и недоверенные пользователи могут добавлять какой-либо контент на сайт, даже если у них нет прямого доступа к редактору. Такие проекты желательно обновить.

Если же у вас активен редактор, но нет никакого стороннего содержимого, в принципе, это не должно вас касаться.

UPD: Это касается только CKEditor 4, CKEditor 5 по всей видимости не подвержен данным проблемам, он не обновлялся.
Вчера вышли обновления безопасности Drupal 9.3.9 и Drupal 9.2.17 исправляющие SA-CORE-2022-006.

В этих релизах обновлена библиотека Guzzle, так как для неё вышло обновление безопасности. Guzzle оценили уязвимость как «минимальный риск». Тем не менее, не ясно как это может сказаться как на ядре, так и сторонних, собственных модулях которые используют библиотеку для сторонних запросов.

Если вы используете Guzzle на проекте, или какие-либо модули, которые отсылают сторонние запросы (например интеграции), будет не лишним обновиться для подстраховки.
Сегодня состоялся патч-релиз Drupal 9.3.10

… а за ним прилетели 9.3.11 и 9.2.17

В 9.3.11 и 9.2.7 обновили composer/composer с версии 2.1.12 и 2.2.12. 🤷‍♂️

Основной релиз, конечно, это 9.3.10, в котором достаточно изменений для патч-релиза. Особенно много улучшений, исправлений и изменений поступило для экспериментального модуля CKEditor 5.
Вчера вышли обновления безопасности для Drupal.

SA-CORE-2022-008 (9.3.12, 9.2.18): Исправили неполадку, из-за которой можно было отправить форму с недопустимыми значениями (в обход валидации), либо с изменёнными данными. Это касается тех форм, в которых используется элемент '#type' => 'item', как и в одном из предыдущих обновлений с '#type' => 'value'. Пишут что проблема встречается редко.

SA-CORE-2022-009 (9.3.12): Исправили проблему с доступом к ревизиям, которая появилась только в 9.3.x. До исправления, пользователи, у которых есть права доступа на просмотр ревизий, могли смотреть те ревизии, в которых используются сущности, доступа к которым у них нет.

В этот раз пропустили SA-CORE-2022-007. Наблюдается какая-то нездоровая тенденция косячить с релизами. 😁
⌨️ Решил неспешно заняться своим блогом. Пока что с технической стороны. Там можно встретить код и функционал аж с версии на Drupal 7. Надо навести порядок, понять что там нужно, а что нет, запилить новые свистоперделки и отпилить старые.

До контента тоже доберусь, но не раньше чем содержимое начнёт собираться из GitHub репозитория как у Druki. Я уже лет 5 пишу все материалы в Markdown файле, а уже затем переношу руками в параграфы, ерунда какая-то. 😁 Опыт Druki подтвердил мне, что это must-have функционал для блога, по крайней мере для моего подхода работы с контентом.

Для того чтобы не было совсем уж скучно, я открыл исходный код своего блога. Исключительно в образовательных целях. Код вы можете заимствовать, но не собирайте на базе репозитория реальные сайты. Обратной совместимости нет и не будет.
Состоялся релиз Drupal 9.3.13.

Немного улучшений для CKEditor 5. Также исправлена неполадка для плагинов @QueueWorker, из-за которой элемент очереди в кроне блокировался лишь на 1 секунду. В остальном, ничего примечательного.
Вчера состоялись релизы безопасности исправляющие SA-CORE-2022-010

В релизах Drupal 9.3.14 и 9.2.20 обновили Guzzle, для которого вчера вышло обновление безопасности.

Если у вас на сайте есть модули, которые при помощи Guzzle делают запросы к внешним ресурсам с использованием cookie, то вам следует обновиться. По умолчанию эта опция (передача кук) отключена и ядро не подвержено данной проблеме.
Вчера состоялся патч релиз Drupal 9.3.15

Из интересного:

— Очередная порция улучшений для модуля CKEditor 5.

— Увеличена производительность страниц при использовании модуля Contextual Links примерно на 6%. Достигнуто это путём небольших изменений в contextual_preprocess().
11 июня (суббота) состоялись релизы безопасности исправляющие SA-CORE-2022-011

В релизах Drupal 9.3.16 и 9.2.21 обновили Guzzle, для которого вышло обновление исправляющее две проблемы безопасности: при запросе, ответ которого перенаправляет с HTTPS на HTTP, не очищались заголовки Authorization (первая) и Cookie (вторая).

Непосредственно ядро Drupal данной проблеме не подвержено, но могут быть проблемы с собственным кодом или сторонними модулями.
Вчера состоялся минорный релиз Drupal 9.4.0!

Изменений много, ощутимая их часть направлена на депрекацию тех или иных API, возможностей, модулей и тем.

Из интересного (субъективно) могу отметить:

— Вернули поддержку генерации стартеркит тем и возможности объявления темы как заготовки для будущей темы путём starterkit: true. Также была добавлена возможность стартовой теме предоставлять свои дополнительные обработчики после генерации новой темы через реализацию StarterKitInterface.

— Рекомендуемая версия PHP увеличена до 8.1. Минимальная не изменилась — 7.3.0.

— В качестве preprocess функций для тем хуков теперь можно использовать callable. Это значит что для препроцесса можно использовать классы.

— Темы оформления теперь могут реализовывать HOOK_post_update_NAME() и HOOK_removed_post_updates().

— Для форматтеров изображений, предоставляемых ядром, добавлена опция для управления lazy аттрибутом изображения.

— Claro — новая административная тема по умолчанию (в стандартном профиле, для новых установок).

— Olivero — новая тема оформления сайта по умолчанию (в стандартном профиле, для новых установок).

— При редактировании бандлов различных сущностей, помимо вкладок «Редактирование», «Управление полями», «Управление отображением» и т.д., теперь также будет появляться вкладка «Управление разрешениями». На данной странице можно будет настроить все связанные с данной сущностью права доступа для различных ролей. (для своих сущностей нужно предоставить соответствующий хендлер)

— Добавлено новое разрешение view update notifications. При помощи данного разрешения можно указать, какие роли будут получать (исключительно на административных страницах) сообщение о новых версиях Drupal и его модулей. Ранее для этого необходимо было выключать update модуль. При обновлении на 9.4.0 это разрешение будет присвоено всем ролям у кого есть разрешение administer site configuration на момент обновления.

— Устаревшие модули теперь помечаются на странице расширений и выводят предупреждение при попытке их активации. Устаревшие темы оформления теперь не отображаются в списке тем.

— Модули объявленные устаревшими: HAL, Aggregator, Color.

И множество других изменений. 💅
Изменения в политике обновлений безопасности для Composer зависимостей ядра.

Из-за участившихся обновлений безопасности (например последние для Guzzle) для сторонних пакетов, от которых зависит ядро, приходится выпускать обновление безопасности для Drupal каждый раз, как такое обновление выходит. Эта практика прекращается для Drupal 9.4+, в котором были ослаблены ограничения для зависимостей ядра, позволяющие получать обновления патч-версий для всех зависимостей (ранее зависимости ядра были заморожены даже на уровне патч-версий). Теперь, вы не только можете самостоятельно обновить подобные зависимости (раньше нужно было ждать апдейта ядра) простым composer update, но и должны это делать для безопасности проекта.

Прошлая практика выпуска обновления ядра для аналогичных обновлений зависимостей будет выпускаться только в том случае, если этой уязвимости подвержено непосредственно ядро Drupal (последние апдейты Guzzle никак не затрагивают Drupal, при этом приходилось выпускать апдейты).

До EOL Drupal 9.3 (декабрь 2022) будет поддерживаться предыдущая практика обновлений (только для 9.3.x ветки). Для сайтов собранных из архивов (🗿) рекомендуется перейти на поддержку через Composer, в противном случае обновления зависимостей будут выходить с патч-релизами ошибок и это может растянуться на недели.

Если вы не уверены и не хотите следить за обновлениями безопасности зависимостей ядра и обновляете проект только по таким релизам, самое простое — взять за правило, обновлять все зависимости проекта в первый или третий четверг месяца. Потому что обновления для ядра выпускаются в первую среду месяца (патч-релизы) и третью среду месяца (обновления безопасности), а из-за временных различий, они у нас появляются фактически в четверг. И не важно, вышло в среду обновление для ядра или нет, вы просто освежаете зависимости проекта и поддерживаете их в тонусе.

UPD. Ещё чего вспомнил. Если ваш проект на GitHub, просто включите соответствующие настройки у проекта и GitHub сам будет оповещать о подобных обновлениях (он понимает Composer): https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning
Сегодня состоялись патч-релизы Drupal 9.4.1 и 9.3.17.

Эти релизы содержат очень мало изменений, основное — ядро теперь запрашивает guzzlehttp/psr7 версии 1.9.x вместо 1.8.x. Это необходимо для очередного обновления безопасности Guzzle.
Если пользуетесь модулем commerce_cart_api, то после обновления на Drupal 9.4.0 обязательно проверьте весь функционал который использует его REST ендпоинты. Скорее всего у вас отвалится существенная доля данных для order_item сущностей, не будет ни цены, ни количества, ни суммы и т.д. Если напоролись, пробуйте патчик.
Сегодня состоялся патч-релиз Drupal 9.4.2.

Абсолютно ничем не примечательный релиз. Разве что можно отметить создание нового раздела с добавлением в него мейнтейнеров (MAINTAINERS.txt) для Project Browser инициативы. Это такой модуль для друпала, типа маркетплейса, который показывает модули с орга и позволяет устанавливать их оттуда. (прототипы, проект)
Сегодня состоялись обновления безопасности 9.4.3 и 9.3.19.

В них исправили сразу 4 «уязвимости»:

SA-CORE-2022-012: Модуль Image мог некорректно проверять доступ к изображениям, для которых генерируюется стиль изображение, а исходник находится не в стандартном публичном хранилище (public://). Эта проблема проявляется только при условии что у вас изменена конфигурация $config['image.settings']['allow_insecure_derivatives'] на значение TRUE. По умолчанию она FALSE и её изменение недоступно через интерфейс.

SA-CORE-2022-013: Очередное исправление связанное с формами, которое могло быть использовано для изменения данных форм, не имея при этом доступа к редактированию этих данных. Формы ядра не подвержены данной проблеме.

SA-CORE-2022-014: Улучшена санитизация для загружаемых файлов. Данная проблема проявляется только на сайтах, работающих на веб-сервере Apache, а также где явно разрешена загрузка файлов с расширением htaccess (🤔).

SA-CORE-2022-015: Исправлена валидация домена используемого для oEmbed iframe предоставляемого модулем Media. В определенных случаях, iframe мог отображаться с использованием основного домена, что могло потенциально открыть возможность для XSS атак и ему подобных. Судя по всему, это требовало некорректной настройки Media.

В общем и целом, ничего страшного для большинства проектов. Но обновиться точно не помешает, так как некоторые проблемы могут вскрыться через сторонние или собственные модули.