С какой целью мы поддерживаем файлы package-lock.json, которые не имеют уязвимостей безопасности? Почему бы просто не удалить их или позволить им устаревать?

package-lock.json хранит набор точных версий для всех зависимостей и транзитивных зависимостей, которые были установлены при последнем запуске npm update. Вам предлагается совершитьpackage-lock.json назад к вашему репо.

Единственный реальный потребитель package-lock.json что я могу найти npm ci, который воспроизводит состояние, определенное в package-lock.json именно так, чтобы вы могли быть уверены, что используете CI на тех же зависимостях, которые были на машине разработчика, которая в последний раз написала package-lock.json.

Другое дело package-lock.jsonпохоже, используется для создания пачки предупреждений системы безопасности. У меня есть изменения в PR-рекламе Dependabot на Github,package-lock.json файлов и жалуясь, что мои package-lock.jsonименно там он "нашел" другие уязвимости, которые не может исправить автоматически. Я подозреваю, что эти неустранимые проблемы связаны с моей или зависимойpackage.json, вызвано требованием к максимальной версии, исключающим исправленную версию модуля-нарушителя, но Dependabot говорит не об этом:

Если package-lock.json используется только npm ci, как ссылка на устаревшую и уязвимую версию пакета может создать уязвимость где угодно, кроме моей системы CI? Никто, кто действительно устанавливает пакет, не будет использоватьpackage.jsonразрешать зависимости и, следовательно, получать исправления для всех уязвимостей автоматически по мере их появления (если только у меня самого нет оскорбительного ограничения максимальной версии)? Действительно ли эти PR к моему репо просто предложения, которые я и все мои пользователи / соавторы запускаем?npm updateна наших машинах? Если да, то что заставило авторов Dependabot сделать это с помощью запроса на вытягивание?

Если я удалю package-lock.json из системы управления версиями, правильно ли решит package-lock.json-обнаруженные уязвимости (потому что файл больше не существует, чтобы заставить кого-то установить старые уязвимые версии моих зависимостей)? Или это просто сделает сканеры уязвимостей неспособными сканировать мое репо (т.е. полагаются ли они наpackage-lock.json вместо разрешения самих зависимостей от package.json) и заставить меня не знать, когда мне нужно npm update?

0 ответов

Другие вопросы по тегам