¿Qué se supone que debo hacer con estas advertencias, dado que las bibliotecas en cuestión pertenecen a bibliotecas de terceros?
> npm audit === npm audit security report === Manual Review Some vulnerabilities require your attention to resolve Visit https://go.npm.me/audit-guide for additional guidance Low Denial of Service Package node-fetch Patched in >=2.6.1 <3.0.0-beta.1|| >= 3.0.0-beta.9 Dependency of aspnet-prerendering Path aspnet-prerendering > domain-task > isomorphic-fetch > node-fetch More info https://npmjs.com/advisories/1556 Moderate Regular Expression Denial of Service Package postcss Patched in >=8.2.10 Dependency of @angular-devkit/build-angular [dev] Path @angular-devkit/build-angular > resolve-url-loader > postcss More info https://npmjs.com/advisories/1693 found 2 vulnerabilities (1 low, 1 moderate) in 1514 scanned packages 2 vulnerabilities require manual review. See the full report for details.No estoy afectado por esto. Solo estaba luchando por cero advertencias en todos los frentes.
¡No puedo/no quiero jugar con la dependencia de una dependencia! ¿Solo necesito actualizar mi dependencia?
Técnicamente, no existe una panacea para resolver el informe de vulnerabilidades de npm audit . Aquí está la "regla general" que estoy siguiendo:
Por lo general, siempre hago una corrección de npm audit fix de npm audit de npm. Tenga en cuenta que: este no resolverá todos los informes.
Actualizar mis dependencias a la última versión estable. Ojo con la compatibilidad. (Espero que entiendas el SEMVER). El costo que gasta para mantener su sistema actualizado y estable siempre es más económico que el costo que necesita para manejar problemas vulnerables.
Reduzca el número de sus dependencias. Tenga en cuenta todo lo que necesita para usar la biblioteca. Puedes construir tú mismo una versión más simple.
Aprenda a separar dependencies y dev dependencies . Si el problema se informa para una herramienta de desarrollo, puede omitirlo. Como dije anteriormente, no existe una bala de plata, así que relájese en lugar de arreglarlos todos. Solo arregla los necesarios.
Finalmente, siga esto: https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities
Puede hacer que sus dependencias usen otra versión (actual/segura) de sus dependencias.
Digamos que tiene una advertencia sobre el paquete postcss , que resolví hace un momento para poder describir el proceso y puede proceder de forma analógica.
Después npm audit , recibí una advertencia como:
Moderate Regular Expression Denial of Service Package postcss Patched in >=8.2.10 Dependency of laravel-mix [dev] Path laravel-mix > cssnano > cssnano-preset-default > postcss-svgo > postcss More info https://npmjs.com/advisories/1693¡Darse cuenta! Debe tener en cuenta que cuando haga que su paquete use una versión más nueva de su dependencia, puede romper cosas, pero vale la pena intentarlo.
Entonces ve que el paquete laravel-mix usa la versión anterior de postcss y que el problema se solucionó en la versión >=8.2.10 de postcss , por lo que desea instalar una versión más nueva del paquete postcss que puede lograr:
npm install postcss --save-dev Luego, debe agregar una nueva sección a su archivo package.json que indique a npm que desea que las dependencias usen su versión específica de la biblioteca. Va en mi caso así:
{ "resolutions": { "postcss": "^8.2.15", } }Luego, debe agregar una nueva secuencia de comandos para forzar el uso de npm de esta nueva sección de "resoluciones" como esta:
"scripts": { "preinstall": "npx npm-force-resolutions" } ¡Darse cuenta! Tiene que ejecutar este script cada vez antes de ejecutar su instalación regular npm install . Dice así:
npm run preinstall npm installSe puede encontrar más información en los documentos de npm .
Es posible que solo necesite editar su paquete.json, actualizar la versión del paquete infractor a la última versión estable (en este caso, https://www.npmjs.com/package/node-fetch ) y luego ejecutar "npm install "desde la terminal.