- PVSM.RU - https://www.pvsm.ru -

PHP Дайджест № 213 (27 сентября – 11 октября 2021)

PHP Дайджест № 213 (27 сентября – 11 октября 2021) - 1

Фото: Noriko YAMAMOTO [1].

Подборка свежих новостей и материалов из мира PHP.

Для PHP 8.2 предложили добавить тип null; опубликована уязвимость в PHP с disable_functions, которая на самом деле не уязвимость; новый сайт от сообщества — phpopendocs.com; PHP 8.1 RC 3, Xdebug 3.1 и другие релизы.

Также в выпуске порция инструментов, полезные статьи, видео.

Приятного чтения!

Этот дайджест подготовлен совместно с Insolita [2]. Если понравился выпуск, плюсаните пост, пожалуйста.

PHP Дайджест № 213 (27 сентября – 11 октября 2021) - 2 Новости

  • PHP 8.1.0 RC 3 [3]

    Очередной релиз-кандидат доставлен по расписанию [4]. Что нового будет в PHP 8.1 можно посмотреть в постах What's new in PHP 8.1 [5] и PHP 8.1: before and after [6] и на PHP.Watch [7].

    Свежий пост от Brent Roose про использование оператора new для дефолтных значений параметров: PHP 8.1: new in initializers [8].

  • «Уязвимость» в PHP для обхода disable_functions

    Исследователь опубликовал [9] метод обхода ограничений, заданных при помощи директивы disable_functions в php.ini.

    С помощью disable_functions [10] можно запретить использование в PHP-скриптах функции, например, можно запретить system, exec, proc_open и shell_exec для блокирования вызова внешних программ.
    // eval(), кстати, не получится запретить [11].

    Уязвимостью эту проблему назвать нельзя, потому что disable_functions — это не секьюрити фича и полагаться на нее ради безопасности — плохая идея.

    Напишите в комментариях, используете ли вы disable_functions?

    Цитата Никиты Попова на Reddit [12]:

    Является ли что-то проблемой безопасности, зависит от вашей модели угрозы. Что касается проекта PHP, то наша модель угрозы — это удаленный злоумышленник. Мы считаем секьюрити проблемой случай, когда злоумышленник имеет возможность выполнить произвольный PHP-код на сервере (RCE).

    Подробнее о том, что в PHP считается проблемой безопасности, а что нет: wiki.php.net/security [13].

    А если интересно разобраться, то вот [14] классный разбор того, как работает disable_functions и как устроены подобные эксплоиты [14]. И даже как можно автоматически искать подобные проблемы [15].

    В тему разбор реальной RCE-уязвимости в fiveai/Cachet [16], популярном проекте на Laravel: Code Execution via Laravel Configuration Injection [17].

  • composer/composer 2.1.9 [18]

    В обновлении исправлена уязвимость на Windows (CVE-2021-41116 [19]). Пользователям Windows обязательно стоит обновиться.

  • PHPOpenDocs.com [20]

    Экспериментальный сайт для полуофициального контента по PHP.

    Из полезного уже есть, страница для спонсорства [21] со списком контрибьюторов сгруппированных по версиям PHP. А также раздел Internals [22] с кучей ссылок про устройство кода PHP и как начать контрибьютить.

  • PHP Russia 2022 [23]

    Уже известны даты для конференции — 6-7 июня. Начали подготовку и прием заявок на доклады!

PHP Дайджест № 213 (27 сентября – 11 октября 2021) - 3 PHP Internals

  • [RFC] Allow null as standalone type [24]

    Предлагается добавить возможность использовать null в декларациях типов.

    Во-первых, это недостающий кусок для полноты системы типов в PHP — есть mixed, добавили never, объединения и пересечения, не хватает юнит-типа [25].

    Во-вторых, такой тип позволит покрыть некоторые граничные случаи и улучшить статический анализ.

    Например, в объединениях можно использовать псевдотип false, но нельзя указать, что функция возвращает false|null, только bool|null.

  • [RFC] Deprecate partially supported callables [26]

    Этот RFC уже на голосовании и, судя по всему, пройдет в PHP 8.2. Подробнее про предложение читайте в PHP-Дайджесте № 211 [27].

PHP Дайджест № 213 (27 сентября – 11 октября 2021) - 4 Инструменты

  • Xdebug 3.1.0 [28] — Обновился популярный отладчик для PHP. Добавлена поддержка PHP 8.1, много фиксов и несколько узкоспецифических фич.
  • php-runtime/runtime [29] — Компонент Runtime отделяет логику загрузки приложения от глобального состояния, и таким образом позволяет запускать приложение в любых окружениях без изменений, например, на PHP-FPM, ReactPHP, Swoole и т.д.
    Изначально это был компонент для Symfony, но получился настолько хорош, что авторы выделили его в отдельную организацию на Гитхабе.
  • rindow/rindow-neuralnetworks [30] — Фреймворк для обучения нейронных сетей по мотивам Python Keras [31]. Согласно документации [32] поддержка GPU пока доступна в экспериментальном режиме и только под Windows.
  • nunomaduro/termwind [33] — Библиотека для форматирования вывода консольных программ с синтаксисом в стиле Tailwind CSS. PHP 8+
  • termage/termage [34] — Еще одна похожая библиотека для форматирования вывода в консоль.
  • piko-framework/router [35] — PHP-разработчики никогда не писали роутеры /s и вот один на базе сжатого префиксного дерева [36]. Если верить бенчмаркам, то быстрее роутера Symfony.
  • unitpay/shamir [37] — Реализация схемы разделения секрета Шамира (Shamir's Secret Sharing). Прислал AlexGx [38].
  • icanhazstring/random-issue-picker [39] — Если хотите поучаствовать в Hacktoberfest, но не знаете с чего начать, то вот инструмент, который выберет случайную issue на гитхабе или гитлабе.

PHP Дайджест № 213 (27 сентября – 11 октября 2021) - 5 Symfony

PHP Дайджест № 213 (27 сентября – 11 октября 2021) - 6 Laravel

PHP Дайджест № 213 (27 сентября – 11 октября 2021) - 12 Статьи

PHP Дайджест № 213 (27 сентября – 11 октября 2021) - 14 Аудио/Видео


Подписывайтесь на Telegram-канал PHP Digest [56].

Этот дайджест подготовлен совместно с Insolita [2]. Если понравился выпуск дайджеста, плюсаните пост, пожалуйста.

Кстати, Юля опубликовала заметку про выборку дней рождения в Postgres [57].

Заметили ошибку или опечатку? Сообщите в личку хабра [58] или телеграм [59].

Прислать ссылку можно через форму [60] или просто написав мне в телеграм [59].
Поиск ссылок по всем дайджестам [61]
Предыдущий выпуск: PHP-Дайджест № 212 [62]

Автор: Роман Пронский

Источник [63]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/368673

Ссылки в тексте:

[1] Noriko YAMAMOTO: https://twitter.com/nauleyco

[2] Insolita: https://twitter.com/DonnaInsolita

[3] PHP 8.1.0 RC 3: https://www.php.net/archive/2021.php#2021-09-30-1

[4] расписанию: https://wiki.php.net/todo/php81#timetable

[5] What's new in PHP 8.1: https://stitcher.io/blog/new-in-php-81

[6] PHP 8.1: before and after: https://stitcher.io/blog/php-81-before-and-after

[7] на PHP.Watch: https://php.watch/versions/8.1

[8] PHP 8.1: new in initializers: https://stitcher.io/blog/php-81-new-in-inititalizers

[9] опубликовал: https://github.com/mm0r1/exploits/tree/master/php-filter-bypass

[10] disable_functions: https://www.php.net/manual/en/ini.core.php#ini.disable-functions

[11] не получится запретить: https://tech.geekjob.ru/disable-evil-eval-in-php-8/

[12] на Reddit: https://www.reddit.com/r/PHP/comments/q2cvkb/yet_another_php_7080_disable_functions_bypass/hflmnfc/?context=3

[13] wiki.php.net/security: https://wiki.php.net/security

[14] вот: https://x-c3ll.github.io/posts/UAF-PHP-disable_functions/

[15] автоматически искать подобные проблемы: https://x-c3ll.github.io//posts/find-bypass-disable_functions/

[16] fiveai/Cachet: https://github.com/fiveai/Cachet

[17] Code Execution via Laravel Configuration Injection: https://blog.sonarsource.com/cachet-code-execution-via-laravel-configuration-injection

[18] composer/composer 2.1.9: https://github.com/composer/composer/releases/tag/2.1.9

[19] CVE-2021-41116: https://github.com/composer/composer/security/advisories/GHSA-frqg-7g38-6gcf

[20] PHPOpenDocs.com: https://phpopendocs.com/about

[21] страница для спонсорства: https://phpopendocs.com/sponsoring

[22] Internals: https://phpopendocs.com/internals

[23] PHP Russia 2022: https://phprussia.ru/moscow/2022

[24] [RFC] Allow null as standalone type: https://wiki.php.net/rfc/null-standalone-type

[25] юнит-типа: https://en.wikipedia.org/wiki/Unit_type

[26] [RFC] Deprecate partially supported callables: https://wiki.php.net/rfc/deprecate_partially_supported_callables

[27] в PHP-Дайджесте № 211: https://habr.com/ru/post/577660/#:~:text=%5BRFC%5D%20Deprecate%20partially%20supported%20callables

[28] Xdebug 3.1.0: https://xdebug.org/announcements/2021-10-04

[29] php-runtime/runtime: https://github.com/php-runtime/runtime

[30] rindow/rindow-neuralnetworks: https://github.com/rindow/rindow-neuralnetworks

[31] Python Keras: https://keras.io

[32] документации: https://rindow.github.io/neuralnetworks/index.html#hello-there

[33] nunomaduro/termwind: https://github.com/nunomaduro/termwind

[34] termage/termage: https://github.com/termage/termage

[35] piko-framework/router: https://github.com/piko-framework/router

[36] сжатого префиксного дерева: https://en.wikipedia.org/wiki/Radix_tree

[37] unitpay/shamir: https://github.com/unitpay/shamir

[38] AlexGx: https://habr.com/ru/users/alexgx/

[39] icanhazstring/random-issue-picker: https://github.com/icanhazstring/random-issue-picker

[40] Неделя Symfony #771 (4-10 октября 2021): https://symfony.com/blog/a-week-of-symfony-771-4-10-october-2021

[41] sajya/server: https://github.com/sajya/server

[42] Разделение кода и текста: первая рабочая версия: https://habr.com/ru/post/579904/

[43] Ресурсы для API в Laravel: https://laravel.demiart.ru/laravel-resources/

[44] Немного про AWS Lambda: https://www.youtube.com/watch?v=2UyDBArGLDY&t=161s

[45] фреймворк для тестов Pest: https://www.youtube.com/watch?v=2UyDBArGLDY&t=3211s

[46] Конвертирование тестов на чистом PHPUnit в Pest: https://www.youtube.com/watch?v=81-r9THrJhI

[47] Пишем онлайн-магазин на Laravel: https://www.youtube.com/watch?v=-0C04evVV9A&list=PLKJBt7aeK3k8Ry6aNd4wUOvfXtlnQh5-O&index=1&t=5s

[48] The Road to PHP: Static Analysis: https://road-to-php.com/static

[49] Шпаргалка по встроенным исключениям в PHP: https://www.strangebuzz.com/en/blog/the-php-exceptions-cheatsheet

[50] Процедуральное искусство (generative art) на PHP: https://www.binarymoon.co.uk/2021/09/creating-generative-art-with-php/

[51] quasilyte/kphp-game: https://github.com/quasilyte/kphp-game

[52] SerafimArts: https://habr.com/ru/users/serafimarts/

[53] PHP + Vulcan: https://www.youtube.com/watch?v=v6ueRknSqc0&list=PLDI5V3o4oKBXOpbAijmk1fjz-h7OBZbqj

[54] тут: https://thephp.website/en/issue/php-ffi/

[55] PHP-программист: публичное собеседование [Хекслет]: https://www.youtube.com/watch?v=8jed0wIQv_A

[56] PHP Digest: https://t.me/phpdigest

[57] про выборку дней рождения в Postgres: https://donnainsolita.medium.com/postgres-%D0%B8-%D0%B4%D0%BD%D0%B8-%D1%80%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F-4c2c760d821e

[58] личку хабра: https://habrahabr.ru/conversations/pronskiy/

[59] телеграм: https://t.me/pronskiy

[60] через форму: https://bit.ly/php-digest-add-link

[61] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/

[62] Предыдущий выпуск: PHP-Дайджест № 212: https://habr.com/ru/post/580210/

[63] Источник: https://habr.com/ru/post/582776/?utm_source=habrahabr&utm_medium=rss&utm_campaign=582776