- Безопасная установка Composer: проверка контрольных сумм и альтернативные методы
- Метод 1: Установка с проверкой контрольной суммы (UNIX)
- Метод 2: Установка конкретной версии через GitHub
- Как проверить правильность безопасной установки Composer
- Где проверить PGP-подпись установщика Composer
Безопасная установка Composer: проверка контрольных сумм и альтернативные методы
При установке Composer важно учитывать, что стандартный скрипт установки содержит контрольную сумму (checksum), которая меняется при любом изменении кода. Это означает, что полагаться на него для долгосрочного использования небезопасно. В этом руководстве разберём два альтернативных способа установки, которые обеспечивают проверку целостности файлов и точное соответствие версий.
Метод 1: Установка с проверкой контрольной суммы (UNIX)
Если вы работаете в UNIX-среде, можно использовать следующий скрипт, который автоматически проверяет хеш установщика перед запуском:
#!/bin/sh
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
then
>&2 echo 'ERROR: Invalid installer checksum'
rm composer-setup.php
exit 1
fi
php composer-setup.php --quiet
RESULT=$?
rm composer-setup.php
exit $RESULT
Как это работает?
- Скрипт загружает ожидаемую контрольную сумму с официального источника.
- Скачивает установщик Composer.
- Сравнивает хеш скачанного файла с эталонным.
- Если хеши не совпадают — установка прерывается с ошибкой (
exit 1
). - Если проверка пройдена — Composer устанавливается, а временные файлы удаляются.
Код возврата:
0
— успешная установка.1
— ошибка (неверная контрольная сумма или сбой загрузки).
Метод 2: Установка конкретной версии через GitHub
Если вам нужна точная, неизменяемая версия установщика, можно загрузить его напрямую из репозитория Composer на GitHub, указав хеш коммита.
wget https://raw.githubusercontent.com/composer/getcomposer.org/f3108f64b4e1c1ce6eb462b159956461592b3e3e/web/installer -O - -q | php -- --quiet
Как это работает?
- Установщик берётся не с основного сайта, а из истории Git, что гарантирует неизменность кода.
- Хеш коммита (
f3108f...
) можно заменить на актуальный, проверив последние коммиты здесь: https://github.com/composer/getcomposer.org/commits/main
Важно:
Этот метод предполагает доверие к GitHub, но исключает риск подмены установщика после публикации.
Как проверить правильность безопасной установки Composer
Оба метода обеспечивают безопасную установку Composer, но подходят для разных сценариев:
- Проверка контрольной суммы — для регулярного использования с автоматическими проверками.
- Фиксированная версия из GitHub — для точного воспроизведения окружения (например, в CI/CD).
Выбирайте подходящий вариант в зависимости от ваших задач!
Где проверить PGP-подпись установщика Composer
Если нужна максимальная безопасность, можно дополнительно проверить PGP-подпись установщика (см. официальную документацию).
Перевод с английского:
getcomposer.org
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)