PHP Дайджест № 213 (27 сентября – 11 октября 2021)
Подборка свежих новостей и материалов из мира PHP.
Для PHP 8.2 предложили добавить тип null
; опубликована уязвимость в PHP с disable_functions, которая на самом деле не уязвимость; новый сайт от сообщества — phpopendocs.com; PHP 8.1 RC 3, Xdebug 3.1 и другие релизы.
Также в выпуске порция инструментов, полезные статьи, видео.
Приятного чтения!
Этот дайджест подготовлен совместно с Insolita. Если понравился выпуск, плюсаните пост, пожалуйста.
Новости
PHP 8.1.0 RC 3
Очередной релиз-кандидат доставлен по расписанию. Что нового будет в PHP 8.1 можно посмотреть в постах What’s new in PHP 8.1 и PHP 8.1: before and after и на PHP.Watch.Свежий пост от Brent Roose про использование оператора
new
для дефолтных значений параметров: PHP 8.1: new in initializers.«Уязвимость» в PHP для обхода
disable_functions
Исследователь опубликовал метод обхода ограничений, заданных при помощи директивыdisable_functions
вphp.ini
.С помощью
disable_functions
можно запретить использование в PHP-скриптах функции, например, можно запретитьsystem
,exec
,proc_open
иshell_exec
для блокирования вызова внешних программ.
//eval()
, кстати, не получится запретить.Уязвимостью эту проблему назвать нельзя, потому что
disable_functions
— это не секьюирити фича и полагаться на нее ради безопасности — плохая идея.Напишите в комментариях, используете ли вы
disable_functions
?Цитата Никиты Попова на Reddit:
Является ли что-то проблемой безопасности, зависит от вашей модели угрозы. Что касается проекта PHP, то наша модель угрозы — это удаленный злоумышленник. Мы считаем секьюрити проблемой случай, когда злоумышленник имеет возможность выполнить произвольный PHP-код на сервере (RCE).
Подробнее о том, что в PHP считается проблемой безопасности, а что нет: wiki.php.net/security.А если интересно разобраться, то вот классный разбор того, как работает
disable_functions
и как устроены подобные эксплоиты. И даже как можно автоматически искать подобные проблемы.В тему разбор реальной RCE-уязвимости в fiveai/Cachet, популярном проекте на Laravel: Code Execution via Laravel Configuration Injection.
composer/composer 2.1.9
В обновлении исправлена уязвимость на Windows (CVE-2021–41116). Пользователям Windows обязательно стоит обновиться.PHPOpenDocs.com
Экспериментальный сайт для полуофициального контента по PHP.Из полезного уже есть, страница для спонсорства со списком контрибьюторов сгруппированных по версиям PHP. А также раздел Internals с кучей ссылок про устройство кода PHP и как начать контрибьютить.
PHP Russia 2022
Уже известны даты для конференции — 6–7 июня. Начали подготовку и прием заявок на доклады!
PHP Internals
[RFC] Allow null as standalone type
Предлагается добавить возможность использоватьnull
в декларациях типов.Во-первых, это недостающий кусок для полноты системы типов в PHP — есть
mixed
, добавилиnever
, объединения и пересечения, не хватает юнит-типа.Во-вторых, такой тип позволит покрыть некоторые граничные случаи и улучшить статический анализ.
Например, в объединениях можно использовать псевдотип
false
, но нельзя указать, что функция возвращаетfalse|null
, толькоbool|null
.[RFC] Deprecate partially supported callables
Этот RFC уже на голосовании и, судя по всему, пройдет в PHP 8.2. Подробнее про предложение читайте в PHP-Дайджесте № 211.
Инструменты
- Xdebug 3.1.0 — Обновился популярный отладчик для PHP. Добавлена поддержка PHP 8.1, много фиксов и несколько узкоспецифических фич.
- php-runtime/runtime — Компонент Runtime отделяет логику загрузки приложения от глобального состояния, и таким образом позволяет запускать приложение в любых окружениях без изменений, например, на PHP-FPM, ReactPHP, Swoole и т.д.
Изначально это был компонент для Symfony, но получился настолько хорош, что авторы выделили его в отдельную организацию на Гитхабе. - rindow/rindow-neuralnetworks — Фреймворк для обучения нейронных сетей по мотивам Python Keras. Согласно документации поддержка GPU пока доступна в экспериментальном режиме и только под Windows.
- nunomaduro/termwind — Библиотека для форматирования вывода консольных программ с синтаксисом в стиле Tailwind CSS. PHP 8+
- termage/termage — Еще одна похожая библиотека для форматирования вывода в консоль.
- piko-framework/router — PHP-разработчики никогда не писали роутеры /s и вот один на базе сжатого префиксного дерева. Если верить бенчмаркам, то быстрее роутера Symfony.
- unitpay/shamir — Реализация схемы разделения секрета Шамира (Shamir’s Secret Sharing). Прислал AlexGx.
- icanhazstring/random-issue-picker — Если хотите поучаствовать в Hacktoberfest, но не знаете с чего начать, то вот инструмент, который выберет случайную issue на гитхабе или гитлабе.
Symfony
Laravel
Статьи
Аудио/Видео
Подписывайтесь на Telegram-канал PHP Digest.
Этот дайджест подготовлен совместно с Insolita. Если понравился выпуск дайджеста, плюсаните пост, пожалуйста.Кстати, Юля опубликовала заметку про выборку дней рождения в Postgres.
Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.
Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 212
Нужен ли отдельный тип null в PHP?
76.92% Да 20
23.08% Нет 6
Проголосовали 26 пользователей.
Воздержались 5 пользователей.