Почему npm install показывает серьезную уязвимость

NPM
Почему npm install показывает серьезную уязвимость

предисловие

когда мыnpm installПри установке зависимостей проекта вы часто видите предупреждение об уязвимости, показанное на рисунке ниже.

анализировать проблему

Мы видим подсказку на картинке выше, что ее можно использоватьnpm audit fixрешить проблему, тоnpm auditДля чего это? зачем проходитьnpm audit fixможет решить проблему. пойдем быстроnpmОфициальный сайт для проверки волны.

Введение на официальном сайте:

npm auditПозволяет разработчикам анализировать сложный код и выявлять конкретные уязвимости и недостатки.

npm audit fixВыявляйте уязвимости в зависимостях проекта и автоматически устанавливайте уязвимые зависимости, которые необходимо обновить, вместо того, чтобы отслеживать и исправлять их самостоятельно.

Конечно, есть и другие команды:

# 只更新 package-lock.json, 不更新 node_modules
npm audit fix --package-lock-only

# 不更新开发依赖即 devDependencies
npm audit fix --only=prod

# 更新到最新的依赖, 而不是仅仅更新到兼容的依赖
npm audit fix --force

# 空运行一次审核修复,了解修复的作用, 并且以 json 的格式输出结果
npm audit fix --dry-run --json

Есть также некоторые команды, пожалуйста, проверьте их самиДокументация.

то мы знаем, что это путем анализаpackage-lock.jsonФайл, затем просканируйте наш пакет, чтобы проанализировать, содержит ли он уязвимости, то есть ли способ не дать ему просканировать?

Решать проблему

После того, как вы нашли проблему, моя первая реакция не отключается путем настройки этого анализа (первая реакция гангстера может заключаться в том, как ее решить).

Посмотрев на документацию, которую мы нашлиnpm auditЕго можно отключить в настройках. Итак, давайте сначала посмотрим, что представляют собой наши конфигурации и какая конфигурация используется для управления функцией анализа.

# 执行下面的命令输出我们的 npm config
npm config ls -l

Вы можете видеть, что будет выведено много конфигураций по умолчанию, а функция анализа аудита создаетсяaudit = trueконтролируется этим свойством.

мы также можем видетьaudit-level = "low"контролировать уровень опасности уязвимости.

Затем мы можем реализовать функцию закрытия аудиторского анализа, изменив эти конфигурации.

# 将 audit 设置成 false 关闭分析功能
npm set audit false

# 设置分析漏洞危险等级,有4个选项: 'low(低)', 'moderate(中等)', 'high(高危)', 'critical(紧要)'
npm set audit-level high

Что ж, в мире тихо, и сообщений об уязвимостях больше не будет~~~~

Однако некоторые друзья будут переживать, что мой проект имеет лазейку и действительно подвергается атаке (хотя я думаю, что вероятность очень мала), что мне делать?

Тогда просто сделай это честноnpm audit fixпочинить это.

Некоторые друзья скажут, что я до сих пор не починил его после казни, в чем причина?

почемуnpm audit fixДо сих пор не отремонтирован

Это потому, что не все зависимости доступны черезnpmкоманда обновления для устранения уязвимости.

Например, некоторые пакетыnode-gypсторонние зависимости, они не могут быть переданыnpmКоманды для изменения можно исправить только вручную.

существуетnode_modules > node_gyp > package.jsonНайдите пакет для обновления и измените его вручную.package.jsonВерсия пакета, модифицированная до последней версии. затем бегиnpm audit fixВот и все.