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

Composer. Небезопасно использовать packagist и приватный источник пакетов одновременно

image
Уже было нечто подобное. Хотя это поведение багом не было, но его исправили. Дело было в том, что composer мог установить не тот пакет, который указан в composer.json, а замещающий его: Composer: Replace, Conflict & Forks Explained [1], Composer: Downloading Random Code Is Not A Security Vulnerability? [2]. Но осталось другое поведение. Оно очевидно, но, как мне кажется, обделено вниманием.

Composer стремится установить более свежую версию пакета. И ему не важно где он найдёт этот пакет, в приватном источнике пакетов или на packagist.

Таким образом, если используются packagist и приватный источник пакетов одновременно, то существует вероятность того, что приватный пакет будет заменен на другой из packagist (если у них совпадут имена и, например, версии). Таким образом существует вероятность того, что пакет может быть(если учесть закон Мерфи, то будет) преднамернно подменён злоумышленником.

Вывод: Небезопасно использовать packagist и приватный источник пакетов одновременно.

Если ничего не используется с packagist, то его можно просто отключить [3]. Если нужны и те, и те пакеты, то желательно создать свою экосистему используя satis [4] или что-нибудь подобное.

А ещё можно на packagist создать пустой пакет, чтобы никто не смог заменить ваш, но это не согласуется с основной идей packagist.

#3509 [5]

Автор: sectus

Источник [6]


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

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

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

[1] Composer: Replace, Conflict & Forks Explained: http://blog.naderman.de/2014/02/17/replace-conflict-forks-explained/

[2] Composer: Downloading Random Code Is Not A Security Vulnerability?: http://blog.astrumfutura.com/2014/02/composer-downloading-random-code-is-not-a-security-vulnerability/

[3] отключить: https://getcomposer.org/doc/05-repositories.md#disabling-packagist

[4] satis: https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#satis

[5] #3509: https://github.com/composer/composer/issues/3509

[6] Источник: http://habrahabr.ru/post/245745/