Вчера состоялся патч релиз Drupal 9.3.15
Из интересного:
— Очередная порция улучшений для модуля CKEditor 5.
— Увеличена производительность страниц при использовании модуля Contextual Links примерно на 6%. Достигнуто это путём небольших изменений в
Из интересного:
— Очередная порция улучшений для модуля CKEditor 5.
— Увеличена производительность страниц при использовании модуля Contextual Links примерно на 6%. Достигнуто это путём небольших изменений в
contextual_preprocess()
.11 июня (суббота) состоялись релизы безопасности исправляющие SA-CORE-2022-011
В релизах Drupal 9.3.16 и 9.2.21 обновили Guzzle, для которого вышло обновление исправляющее две проблемы безопасности: при запросе, ответ которого перенаправляет с HTTPS на HTTP, не очищались заголовки
Непосредственно ядро Drupal данной проблеме не подвержено, но могут быть проблемы с собственным кодом или сторонними модулями.
В релизах Drupal 9.3.16 и 9.2.21 обновили Guzzle, для которого вышло обновление исправляющее две проблемы безопасности: при запросе, ответ которого перенаправляет с HTTPS на HTTP, не очищались заголовки
Authorization
(первая) и Cookie
(вторая).Непосредственно ядро Drupal данной проблеме не подвержено, но могут быть проблемы с собственным кодом или сторонними модулями.
Вчера состоялся минорный релиз Drupal 9.4.0!
Изменений много, ощутимая их часть направлена на депрекацию тех или иных API, возможностей, модулей и тем.
Из интересного (субъективно) могу отметить:
— Вернули поддержку генерации стартеркит тем и возможности объявления темы как заготовки для будущей темы путём
— Рекомендуемая версия PHP увеличена до 8.1. Минимальная не изменилась — 7.3.0.
— В качестве preprocess функций для тем хуков теперь можно использовать
— Темы оформления теперь могут реализовывать
— Для форматтеров изображений, предоставляемых ядром, добавлена опция для управления
— Claro — новая административная тема по умолчанию (в стандартном профиле, для новых установок).
— Olivero — новая тема оформления сайта по умолчанию (в стандартном профиле, для новых установок).
— При редактировании бандлов различных сущностей, помимо вкладок «Редактирование», «Управление полями», «Управление отображением» и т.д., теперь также будет появляться вкладка «Управление разрешениями». На данной странице можно будет настроить все связанные с данной сущностью права доступа для различных ролей. (для своих сущностей нужно предоставить соответствующий хендлер)
— Добавлено новое разрешение
— Устаревшие модули теперь помечаются на странице расширений и выводят предупреждение при попытке их активации. Устаревшие темы оформления теперь не отображаются в списке тем.
— Модули объявленные устаревшими: HAL, Aggregator, Color.
И множество других изменений. 💅
Изменений много, ощутимая их часть направлена на депрекацию тех или иных 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+, в котором были ослаблены ограничения для зависимостей ядра, позволяющие получать обновления патч-версий для всех зависимостей (ранее зависимости ядра были заморожены даже на уровне патч-версий). Теперь, вы не только можете самостоятельно обновить подобные зависимости (раньше нужно было ждать апдейта ядра) простым
Прошлая практика выпуска обновления ядра для аналогичных обновлений зависимостей будет выпускаться только в том случае, если этой уязвимости подвержено непосредственно ядро 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
Из-за участившихся обновлений безопасности (например последние для 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 мог некорректно проверять доступ к изображениям, для которых генерируюется стиль изображение, а исходник находится не в стандартном публичном хранилище (
SA-CORE-2022-013: Очередное исправление связанное с формами, которое могло быть использовано для изменения данных форм, не имея при этом доступа к редактированию этих данных. Формы ядра не подвержены данной проблеме.
SA-CORE-2022-014: Улучшена санитизация для загружаемых файлов. Данная проблема проявляется только на сайтах, работающих на веб-сервере Apache, а также где явно разрешена загрузка файлов с расширением
SA-CORE-2022-015: Исправлена валидация домена используемого для oEmbed iframe предоставляемого модулем Media. В определенных случаях, iframe мог отображаться с использованием основного домена, что могло потенциально открыть возможность для XSS атак и ему подобных. Судя по всему, это требовало некорректной настройки Media.
В общем и целом, ничего страшного для большинства проектов. Но обновиться точно не помешает, так как некоторые проблемы могут вскрыться через сторонние или собственные модули.
В них исправили сразу 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.
В общем и целом, ничего страшного для большинства проектов. Но обновиться точно не помешает, так как некоторые проблемы могут вскрыться через сторонние или собственные модули.
Сегодня состоялись патч-релизы Drupal 9.3.20 и 9.4.4.
Непонятно что это было. Походу основное изменение — обновление зависимости
Непонятно что это было. Походу основное изменение — обновление зависимости
laminas/laminas-diactoros
до 2.11.1 из-за CVE-2022-31109 (Drupal скорее всего не подвержен проблеме). Эти релизы также содержат все накопленные изменения, которые должны были выйти на следующей неделе. Так, 9.4.4 содержит много мелких исправлений и улучшений в довесок к обновлению зависимости.Вчера состоялся релиз Drupal 9.4.6
Очередной хаотичный и непонятный релиз, в окно для выпуска обновлений безопасности, но не тут то было, и это обычный патч-релиз!
Самое интересное изменение — рекомендуемая версия для PHP увеличина до 8.1.6, так как версии 8.1.0-8.1.5 содержат баг с OPCache, который может приводить к фатальным ошибкам на сайте. Так что убедитесь какая у вас версия PHP на проде и используете ли вы OPCache (очень вероятно).
Попутно исправлены различные ошибки и проблемы в CKEditor 5, потому что он в Drupal 10 станет редактором по умолчанию, а CKEditor 4 будет удалён. Ну и всякого по мелочи.
Очередной хаотичный и непонятный релиз, в окно для выпуска обновлений безопасности, но не тут то было, и это обычный патч-релиз!
Самое интересное изменение — рекомендуемая версия для PHP увеличина до 8.1.6, так как версии 8.1.0-8.1.5 содержат баг с OPCache, который может приводить к фатальным ошибкам на сайте. Так что убедитесь какая у вас версия PHP на проде и используете ли вы OPCache (очень вероятно).
Попутно исправлены различные ошибки и проблемы в CKEditor 5, потому что он в Drupal 10 станет редактором по умолчанию, а CKEditor 4 будет удалён. Ну и всякого по мелочи.
Вчера состоялись релизы безопасности Drupal 9.3.22 и 9.4.7.
Для Twig вышло обновление безопасности для уявзимости, которая может быть использована в Drupal. Код для ядра был обновлён чтобы невелировать проблему.
Если не обновиться, то пользователи, у которых есть доступ к Twig, могут использовать данную уязвимость для доступа к содержимому файлов на сервере. Например к приватным файлам или
По умолчанию пишут что это доступно только администраторам сайта с ограниченными правами доступа и в целом не опасно. Думаю, имеется ввиду Views UI, в котором можно использовать Twig в некоторых настройках. Также это и касается различных сторонних модулей, которые позволяют работать с Twig из админки. Вроде такая возможность имеется в Webform.
В общем и целом, если к админке имеют доступ люди, которым вы не доверяете,(странно что они тогда имеют такой доступ 😂) то лучше обновиться пораньше. А так, вроде не страшно.
Для Twig вышло обновление безопасности для уявзимости, которая может быть использована в Drupal. Код для ядра был обновлён чтобы невелировать проблему.
Если не обновиться, то пользователи, у которых есть доступ к Twig, могут использовать данную уязвимость для доступа к содержимому файлов на сервере. Например к приватным файлам или
settings.php
.По умолчанию пишут что это доступно только администраторам сайта с ограниченными правами доступа и в целом не опасно. Думаю, имеется ввиду Views UI, в котором можно использовать Twig в некоторых настройках. Также это и касается различных сторонних модулей, которые позволяют работать с Twig из админки. Вроде такая возможность имеется в Webform.
В общем и целом, если к админке имеют доступ люди, которым вы не доверяете,
Вчера состоялся релиз Drupal 9.4.8.
В этом релизе исправлены различные мелкие ошибки и недочёты. Ничего примечательного, кроме того что он в этот раз вышел вовремя. 😄
В этом релизе исправлены различные мелкие ошибки и недочёты. Ничего примечательного, кроме того что он в этот раз вышел вовремя. 😄
Вчера состоялся релиз Drupal 9.4.9
Обычный патч релиз с исправлениями и улучшениями. Ничего примечательного.
На следующей неделе ожидаются релизы покрупнее: 9.5.0 и 10.0.0! Так что можно смело до 9.5.0 откладывать обновление проектов.
Обычный патч релиз с исправлениями и улучшениями. Ничего примечательного.
На следующей неделе ожидаются релизы покрупнее: 9.5.0 и 10.0.0! Так что можно смело до 9.5.0 откладывать обновление проектов.
Состоялся релиз Drupal 9.5.0
— Рекомендуемая версия PHP — 8.1.6.
—
— Добавлена новая AJAX команда —
— Темы оформления объявлены устаревшими и удалены в Drupal 10: Bartik, Stable (не путайте со Stable9), Classy.
— Модули объявленные устаревшими и удалены в Drupal 10: Quick Edit, RDF, CKEditor 4.
— Библиотеки объявленные устаревшими и удалены в Drupal 10: jQuery Farbtastic, PopperJS, Shepherd.js.
— CKEditor 5 — стабильный модуль.
— Twig функция
— Добавлена возможность отладки кеш метаданных при помощи HTML комментариев по принципу отладки шаблонов.
— Рекомендуемая версия PHP — 8.1.6.
—
*.services.yml
теперь поддерживает настройку _defaults
, которая позволяет задать настройки по умолчанию для всех объявленных сервисов в файл.— Добавлена новая AJAX команда —
add_js
. С этим изменением также исправлены проблемы состояния гонки при подключении библиотек через AJAX.— Темы оформления объявлены устаревшими и удалены в Drupal 10: Bartik, Stable (не путайте со Stable9), Classy.
— Модули объявленные устаревшими и удалены в Drupal 10: Quick Edit, RDF, CKEditor 4.
— Библиотеки объявленные устаревшими и удалены в Drupal 10: jQuery Farbtastic, PopperJS, Shepherd.js.
— CKEditor 5 — стабильный модуль.
— Twig функция
dump()
теперь использует Symfony VarDumper если он доступен на проекте.— Добавлена возможность отладки кеш метаданных при помощи HTML комментариев по принципу отладки шаблонов.
🎉 Состоялся релиз Drupal 10.0.0 🎉
— Разумеется, все изменения из Drupal 9.5.0.
— Минимальная версия PHP — 8.1.
— Компоненты Symfony теперь 6 версии.
— Прекращена поддержка Internet Explorer и весь соответствующий код был удалён.
— Twig обновлён до 3 версии.
— В ядро добавили и начали использовать PHPStan!
— Добавлен новый Twig фильтр
Также напоминаю что на Druki есть руководство по обновлению Drupal 9 до Drupal 10. Возможно оно окажется полезным.
— Разумеется, все изменения из Drupal 9.5.0.
— Минимальная версия PHP — 8.1.
— Компоненты Symfony теперь 6 версии.
— Прекращена поддержка Internet Explorer и весь соответствующий код был удалён.
— Twig обновлён до 3 версии.
— В ядро добавили и начали использовать PHPStan!
— Добавлен новый Twig фильтр
|add_suggestion()
.Также напоминаю что на Druki есть руководство по обновлению Drupal 9 до Drupal 10. Возможно оно окажется полезным.
🫡 И на этой ноте я прекращаю поддержку Druki
С релизом Drupal 10 подходит и к концу мой пет-проджект druki.ru! Он продержался даже дольше чем ожидал и планировал. Подробнее здесь.
Всем кто помогал и поддерживал — огромное спасибо. Из этого проекта я вынес вагон и целую тележку различного нового опыта, надеюсь что и вам что-то пришлось по душе и оказалось полезным.
За изменениями Drupal вам теперь придётся следить самостоятельно. Но интересные и полезные я по возможности буду просто кидать в чат.
Нет худа без добра — я наконец-то вернусь к блогу. Займусь его технической и контентной частью. Выдыхаю с большим облегчением 😌
С релизом Drupal 10 подходит и к концу мой пет-проджект druki.ru! Он продержался даже дольше чем ожидал и планировал. Подробнее здесь.
Всем кто помогал и поддерживал — огромное спасибо. Из этого проекта я вынес вагон и целую тележку различного нового опыта, надеюсь что и вам что-то пришлось по душе и оказалось полезным.
За изменениями Drupal вам теперь придётся следить самостоятельно. Но интересные и полезные я по возможности буду просто кидать в чат.
Нет худа без добра — я наконец-то вернусь к блогу. Займусь его технической и контентной частью. Выдыхаю с большим облегчением 😌
Улучшение агрегации CSS и JavaScript
Сразу поделюсь крайне интересным изменением, которое появится в Drupal 10.1.0. В нём поменяли процесс агрегации CSS и JS при подготовке ответа!
Сейчас агрегация происходит в момент подготовки ответа страницы. Это означает, что если данный процесс занимает 10 секунд, то это минимум времени, которое потребуется для подготовки ответа страницы. Это же изменение выносит процесс агрегации в подзапросы по типу BigPipe и обрабатывает их уже после начала ответа или, если вам так ближе, по принцпу генерации стилей изображений. В ответе будет находиться только заранее известный URL с файлами, но само содержимое будет сгенерировано только при обращении к нему, а не так, что сначала генерируются файлы, а только после получается URL и происходит ответ сервера.
Подобная переработка агрегации ускоряет ответ на холодный кеш примерно на ~ 100-1000ms в зависимости от сложности проекта.
#drupal #drupal_10 #drupal_10_1
Сразу поделюсь крайне интересным изменением, которое появится в Drupal 10.1.0. В нём поменяли процесс агрегации CSS и JS при подготовке ответа!
Сейчас агрегация происходит в момент подготовки ответа страницы. Это означает, что если данный процесс занимает 10 секунд, то это минимум времени, которое потребуется для подготовки ответа страницы. Это же изменение выносит процесс агрегации в подзапросы по типу BigPipe и обрабатывает их уже после начала ответа или, если вам так ближе, по принцпу генерации стилей изображений. В ответе будет находиться только заранее известный URL с файлами, но само содержимое будет сгенерировано только при обращении к нему, а не так, что сначала генерируются файлы, а только после получается URL и происходит ответ сервера.
Подобная переработка агрегации ускоряет ответ на холодный кеш примерно на ~ 100-1000ms в зависимости от сложности проекта.
#drupal #drupal_10 #drupal_10_1
SameSite: Lax
(что такое). Данное значение может быть настроено в *.services.yml
файле. Для существующих сайтов рекомендуется добавить эту настройку самостоятельно.$settings['file_assets_path']
которая позволяет указать путь где будут храниться агрегированные файлы JavaScript + CSS. По умолчанию она будет использовать public://
директорию. Данный путь будет доступен через новый URI assets://
. Это изменение позволит хранить сгенерированные ассеты проекта в любом другом месте, включая альтернативные хранилища по типу внешнего S3.$settings['cache']['bins']['render'] = 'cache.backend.null';
+ $settings['cache']['bins']['page'] = 'cache.backend.null';
+ $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
). Данные настройки хранятся в state
хранилище, а следовательно, не будут случайно отправлены на деплой./components/my-button
, добавляете my-botton.twig
, my-button.css
и можно использовать! Это позволит привлекать к вёрстке людей без знаний друпала. Всё равно друпалер потребуется, но уже в минимальном участии. Там чуточку сложнее чем я написал, ибо нужно описать также схему для этого компонента, но никакого PHP, всё на YAML + TWIG + CSS + JS. Рекомендую почитать документацию о данном модуле. Существует одноимённый контриб модуль SDC из которого он и переехал в ядро — если вы его не используете, я настоятельно не рекомендую этого делать. Например, начать на 10.0, а потом просто обновиться и переключиться на тот что в ядре. Они уже сильно отличаются и рефакторинг под версию в 10.1 может занять очень много времени, проще дождаться релиза и обновиться.Как и всегда, множество других изменений и улучшений! Я выделил лишь те, что показались мне интересными.
Please open Telegram to view this post
VIEW IN TELEGRAM
В релизе, как обычно, есть исправления, улучшения и нововведения. Ниже наиболее интересные изменения (по моему мнению):
@Block
и @Action
, постепенно поддержка будет расширяться. Подробнее.autoconfigure
в .services.yml
. Подробнее.AutowireTrait
c PHP аттрибутом #[Autowire(service: 'entity_type.manager')]
для внедрения зависимостей в конструкторе без переопределения/объявления метода ::create()
. Подробнее.DeprecationHelper
для объявления функций/методов как устаревших. Подробнее.Полный список изменений будет доступен после релиза.
Please open Telegram to view this post
VIEW IN TELEGRAM