Heimdall: політика мінімального віку для ваших Composer-залежностей

Перекладено ШІ 0 Laravel News 25 липня, 2026

Більшість шкідливих релізів Composer видаляють протягом першої доби, тому плагін Heimdall пропонує вашому проєкту просто перечекати цей критичний період. Встановіть мінімальний вік пакетів та захистіть свою директорію vendor від потенційно небезпечного коду.

Більшість шкідливих релізів Composer виявляють та видаляють протягом перших двох днів після появи. Heimdall, плагін від Encore Digital Group, використовує цю особливість: він просто змушує ваш проєкт зачекати. Ви встановлюєте кількість днів, і плагін блокує інсталяцію версій, молодших за цей термін. Назва відсилає до скандинавського вартового Геймдалля, який охороняв міст до Асґарду. У цій метафорі мостом є шлях між Packagist та вашою директорією vendor/.

# Налаштування мінімального віку package

Конфігурація додається у блок extra.heimdall у вашому composer.json. Ключ minimum_age визначає кількість днів:

{
    "extra": {
        "heimdall": {
            "minimum_age": 7
        }
    }
}

Тепер package, випущений три дні тому, не буде встановлено. Composer автоматично обере найсвіжішу версію, що відповідає критерію віку, і продовжить роботу. Якщо параметр minimum_age не вказано, плагін ніяк не впливатиме на процес.

# Довірені vendors та packages

Жорстке правило для всіх dependencies може створювати незручності — наприклад, затримувати ваші власні розробки або термінові security patches. Heimdall дозволяє створювати винятки для конкретних вендорів або пакетів:

{
    "extra": {
        "heimdall": {
            "minimum_age": 7,
            "trusted": {
                "vendors": [
                    "encoredigitalgroup"
                ],
                "packages": [
                    "acme/widgets"
                ]
            }
        }
    }
}

Усе, що потрапляє до списку довірених вендорів або в trusted.packages, оминає перевірку віку. Решта релізів усе одно матиме «відстоятися».

# Фільтрація перед роботою solver

Heimdall працює на етапі PluginEvents::PRE_POOL_CREATE, тобто ще до запуску dependency solver. Надто нові версії просто видаляються зі списку кандидатів, тому solver їх навіть не розглядає. Як результат — ви отримуєте звичайний результат інсталяції замість помилки постфактум, а resolution залишається детермінованим.

Потрібно разово обійти правило? Команда composer install --no-plugins вимкне Heimdall разом з іншими плагінами.

# Встановлення

Для роботи потрібен PHP 8.4 або новіше та Composer 2.0 чи пізніших версій:

composer require encoredigitalgroup/heimdall

Composer запитає дозволу на запуск плагіна. Погоджуйтесь, додайте блок extra.heimdall, і політика запрацює під час наступної інсталяції чи оновлення.

# Порівняння з нативними інструментами Composer

Останнім часом Composer та Packagist суттєво посилили безпеку supply chain. У Composer 2.10 з’явився блок конфігурації policy для обробки security advisories, закинутих пакетів та шкідливого ПЗ. Packagist інтегрував систему виявлення malware Aikido та заборонив непомітне переписування стабільних версій через re-tagging. Проте всі ці заходи працюють лише тоді, коли про проблему вже стало відомо.

Компрометований release завдає найбільшої шкоди саме у перші години — до того, як з’явиться офіційне попередження чи malware-прапорець. Heimdall не чекає на репорти, він орієнтується лише на дату публікації. Packagist також згадував цей підхід у своєму звіті щодо безпеки supply chain, де мінімальний вік релізу фігурує у списку запланованих функцій.

Composer планує впровадити такий функціонал нативно. У документації вже зарезервовано назву minimum-release-age, а PR #12692 додає cooldown policy саме для таких випадків. На момент написання статті реліз цієї фічі очікується у Composer 2.11. Heimdall дозволяє реалізувати цей підхід уже зараз, до того ж він працює на версіях Composer від 2.0.

Дізнатися більше, переглянути сирці та повну інструкцію можна у репозиторії Heimdall на GitHub.

Популярні

Інше, що варто прочитати

20 Оновлено 26 червня, 2026

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

42 Оновлено 26 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

13 Оновлено 26 червня, 2026

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!