No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
11 Hrs
28 Min
48 Seg

Seguridad y solución de problemas

10/15
Recursos

La seguridad de tu proyecto puede ser vulnerada por paquetes desactualizados. Al momento de instalar tus paquetes con el comando npm install muestra una serie de advertencias (NPM WARN) de las dependencias desactualizadas.

Auditar tus dependencias

El comando npm audit muestra una descripción de las dependencias instaladas. Si se encuentran vulnerabilidades, se calculará el impacto al proyecto.

Si se requiere un informe más detallado en formato JSON (JavaScript Object Notation), utiliza el comando npm audit --json.

El comando npm audit fix proporciona una actualización de los paquetes, similar al comando npm update <paquete>. El comando npm audit fix --force proporciona una actualización de los subpaquetes de cada paquete, en todos sus niveles de profundidad.

Si el problema persiste, es necesario actualizar el paquete a su última versión.

bash $ npm install <paquete>@latest

Solución de problemas

Cuando estés desarrollando un proyecto con NPM, puede que generes errores que no permitan seguir con tu trabajo. Saber manejar los errores es fundamental para solucionarlos y seguir con tus tareas (y no entrar en pánico). Alguno de estos errores pueden ser:

  • Errores en la configuración del archivo package.json
  • Errores de dependencias en node_modules
  • Errores del sistema operativo
  • Configuración errónea de Git o GitHub
  • Errores de escritura (typos)
  • Errores que no estén ligados directamente a NPM

Error de dependencias en node_modules

Existen situaciones en las que instalas una dependencia con una versión que no corresponde a la deseada. Esto ocurre porque NPM guarda en el caché una versión previamente instalada de un paquete, esto para mejorar los tiempos de instalación.

En esta situación, puedes utilizar los siguientes comandos, el primero para borrar el caché de NPM y el segundo para verificar si están eliminados correctamente.

bash $ npm cache clean --force $ npm cache verify

Contribución creada por Andrés Guano (Platzi Contributor).

Aportes 31

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Me ha gustado mucho la clase, en especial porque he visto comandos que me topo en mi día a día desarrollando. Les dejo mis apuntes de los principales comandos de la clase:
npm audit --> Audita las dependencias que tenemos instaladas en busca de vulnerabilidades.
npm audit fix --> Audita e intenta arreglar las vulnerabilidades de nuestras dependencias.
npm audit --json --> Muestra los resultados de la auditoría a manera más profunda en formato json.
npm audit fix --force --> Corrige los problemas encontrados en las librerías instalando otras dependencias por debajo si es necesario.

Comando Phoenix

🔥 Puede que existan valores corruptos o una instalación incorrecta de una dependencia, deberás eliminar el directorio de node_modules y después ejecutar el comando npm install para instalar correctamente los paquetes.
.
Puedes utilizar el siguiente comando phoenix en el package.json para evitar escribir demasiado cada vez que lo necesites. Lo aprendí de Midudev. 🙌

// package.json
{
 "scripts": {
   "phoenix": "rm -f package-lock.json && rm -rf ./node_modules && npm install --no-fund --no-audit"
 }
}

Es gracioso que comencé con 4 vulnerabilidades bajas, ejecute npm audit fix y npm audit fix --force y termine con 7 vulnerabilidades y 2 altas jajaja

Seguridad y solución de problemas

Muchas veces algunas dependencias pueden llegar a comprometer nuestro proyecto y podemos verlos al momento de hacer el npm install, si nos muestra vulnerabilidades

  • Moderates: pueden dejarse pasar, pues no tendrán mayor efecto.
  • High: podemos considerarlas, esto puede volverse crítico.
  • Critical: son las que si o si hay que reparar.

  • npm audit veremos las vulnerabilidades, lo que está sucediendo y nos entrega una serie de información para tomar decisiones. Si continuaremos utilizando la librería o si la actualizamos.

  • npm audit fix puede ser usado si nos indica que están disponibles reparaciones de dependencias. Entonces a parte de ejecutar la auditoria, puede hacer una reparación.

  • npm audit --json mostrará la información de forma mas detallada en un formato json para analizarla mejor.

  • npm audit fix --force es sugerido para implementar la reparación de las demás vulnerabilidades y por fin ser reparadas.

  • npm install nombre@latest se usa para actualizar los paquetes a su última versión para que no esté causando vulnerabilidades.

Hasta el momento me ha parecido un excelente curso. Muy buen profesor. Siempre usaba estos comandos pero no sabia su verdadero funcionamiento, he aprendido muchísimo. 100% recomendado.

🔐 Archivos del Proyecto 🔐


 

Pasos 📌

 

  • • En la terminal estar dentro de la carpeta del proyecto react-base, ejecutar:
npm audit

 

  • • Si se quiere ver el informe a un nivel mas detallado, tipo objeto, se ejecuta:
npm audit --json

 

  • • Si aún siguen apareciendo vulnerabilidades, se ejecuta:
npm audit fix

 

  • • Si aún siguen apareciendo vulnerabilidades, se ejecuta:
npm audit fix --force

 

  • • Si aún sigue apareciendo vulnerabilidades, se puede tratar de actualizar los paquetes a los que se refieren las advertencias, por ejemplo con web-pack, se busca cuáles paquetes se van actualizar, se listan los paquetes con:
npm list

 

  • • Aparece para web-pack:
├── webpack-cli@4.7.2
├── webpack-dev-server@3.11.3
└── webpack@5.83.1

 

  • • Se instala c/u a la última versión, de ésta forma:
npm install webpack-cli@latest
npm install webpack-dev-server@latest
npm install webpack@latest

 

  • • Se vuelve a ejecutar: npm list y npm audit

  • • No deben salir conflictos:

found 0 vulnerabilities

Seguridad y Solución de Problemas

¿Como Auditar las Vulnerabilidades?

Para auditar o revisar la vulnerebilidades de nuestras dependecias podemos utilizar

npm audit

Pero tambien podemos utilizar el siguiente comando para mostrar la auditoria de forma mas detallada a travez de un formano .JSON

npm audit --json

¿Como Resolver las vulnerabilidades?

Para resolver parte de las vulnerabilidades podemos utilizar el siguiente comando.

npm audit fix

Si despues de Ejecutar el anterior comando no fue suficiente se puede forzar la instalación de dependecias que ayudaran a eliminar estas vulnerabilidades o que correran por debajo de otras dependecias.

npm audit fix --force

‼️ Puede pasar que al correr estos comandos no se arreglen las vulnerabilidades, para este caso debes correr npm list y actualizar las dependencias manualmente

Una Alternativa: npm-check-updates


  • npm audit fix solo actualiza los paquetes que tienen vulnerabilidades. Pero si queremos actualizar los paquetes aunque no tengan vulnerabilidades?

  • Cuando usamos npm outdated, muestra todos los paquetes que tienen nuevas versiones, incluyendo versiones que podrían causar conflictos.

  • Si usamos npm update, se van a actualizar nuestros paquetes según las reglas de versionado semántico o SemVer rules que hemos especificado en el package.json. Pero si se encuentra una actualización que rompe algo, no lo va a instalar.

  • Para ser más cuidadosos con todo este proceso existe un paquete llamado npm-check-updates (Documentación) que verifica nuevas actualizaciones y hasta puede encontrar posibles breaks sin realmente modificar el proyecto.

  • Si lleva el flag -u va a modificar el package.json y luego necesita que se corra npm install para actualizar realmente las dependencias.

10/15 Curso de NPM: Seguridad y solución de problemas

La seguridad y la solución de problemas en proyectos de Node.js gestionados con NPM (Node Package Manager) son esenciales para mantener la estabilidad y la integridad de tu aplicación. Aquí tienes algunas prácticas clave para abordar estos aspectos en tu proyecto:


Seguridad:

  1. Actualización de dependencias: Como se mencionó anteriormente, mantener tus dependencias actualizadas es fundamental para abordar vulnerabilidades de seguridad conocidas. Ejecuta npm outdated para verificar las actualizaciones disponibles y aplica las correcciones de seguridad mediante npm update.

  2. Auditoría de seguridad: NPM proporciona una herramienta de auditoría de seguridad que puedes usar para identificar y solucionar vulnerabilidades conocidas en tus dependencias. Ejecuta el siguiente comando para realizar una auditoría de seguridad:

    npm audit
    

    Luego, sigue las recomendaciones para resolver las vulnerabilidades.

  3. Paquetes verificados y confiables: Prefiere utilizar paquetes populares y ampliamente confiables con una base de usuarios activa y una comunidad que supervise la seguridad.

  4. Control de acceso: Limita el acceso a tu proyecto en NPM y establece permisos adecuados para colaboradores. Solo las personas de confianza deben tener acceso de escritura a tu proyecto.

  5. Verificación de firmas: Algunos paquetes de NPM son firmados digitalmente. Puedes verificar la firma de un paquete antes de instalarlo para garantizar su autenticidad.



Solución de problemas:

  1. Registro y seguimiento de errores: Utiliza herramientas de registro y seguimiento de errores, como Winston, Bunyan o herramientas de registro en la nube, para rastrear y registrar errores en tu aplicación.

  2. Depuración: Aprovecha las capacidades de depuración de Node.js y las extensiones de depuración en tu entorno de desarrollo, como Visual Studio Code, para identificar y solucionar problemas en tu código.

  3. Pruebas automatizadas: Implementa pruebas automatizadas utilizando herramientas como Mocha, Jest o Jasmine para identificar y corregir problemas en tu código antes de que lleguen a producción.

  4. Herramientas de rendimiento: Utiliza herramientas de rendimiento como New Relic o PM2 para analizar el rendimiento de tu aplicación en producción y resolver cuellos de botella.

  5. Monitorización en producción: Establece sistemas de monitorización en producción para supervisar el estado y el rendimiento de tu aplicación en tiempo real. Herramientas como Prometheus y Grafana son útiles para esta tarea.

  6. Gestión de dependencias: Asegúrate de gestionar adecuadamente las dependencias de tu proyecto en el archivo package.json. Mantén un registro claro de las versiones de las dependencias para evitar problemas de incompatibilidad.

  7. Documentación y guías de solución de problemas: Proporciona documentación clara para desarrolladores que incluya información sobre cómo configurar el entorno de desarrollo, solucionar problemas comunes y manejar casos excepcionales.

  8. Redes de apoyo y comunidad: Únete a comunidades en línea, como el foro de NPM, Stack Overflow y grupos de desarrollo en redes sociales, donde puedes obtener ayuda y consejos de otros desarrolladores.

  9. Backups y restauración: Implementa estrategias de respaldo y recuperación para proteger tus datos y sistemas en caso de fallos graves.


La seguridad y la solución de problemas son prácticas continuas en el desarrollo de software. Mantén tus sistemas y dependencias actualizados, sigue buenas prácticas de codificación y permanece atento a las noticias de seguridad y a las actualizaciones de las dependencias para mantener tu proyecto seguro y en funcionamiento.

Espero sea de utilidad. 👨‍💻

Comparto una herramienta que permite estar verificando este tema de las vulnerabilidades y paquetes desactualizados en los proyectos (hacer la integración con la herramienta y recibir los informes al correo): https://snyk.io

Básicamente lo que nos da a entender el profe Oscar, es que una vez que ejecutamos todas las herramientas NPM que nos permiten auditar y fixear aquellas vulnerabilidades que nos saltan por consola, empezar a buscar aquellas más especificas que nos podrían estar causando problemas…
Como lo hace en el ejemplo de la clase con WEBPACK

a mi aparecieron errores criticos al querer actualizar webpack-cli, pero actualizando babel, se soluciono

Me está explotando la cabeza jajajajaja tanta información🤣🤣

Excelente clase, muy útil este curso

Cuando corrí el audit fix continuaba dando error, pero al correr audit fix --force solucionó todas las vulnerabilidades!!
Muy buena clase y excelente curso!!! Todo es bienvenido para no parar de aprender!!!

Genial el curso!! Muy bueno que lo hayan actualizado

Comparto mis apuntes: ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-19%20a%20la%28s%29%2009.49.38-a8bdb7e9-534a-4b74-9eeb-a3aca496386a.jpg) ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-19%20a%20la%28s%29%2009.52.00-8ebd417c-bc29-4cd6-9bc9-73fe721f2b11.jpg)![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-19%20a%20la%28s%29%2009.52.51-8d1f1bd8-fb74-4439-8a5f-27e415229b3f.jpg)![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-11-19%20a%20la%28s%29%2009.53.30-df32a0e7-0ca0-4e3f-8481-8353a00ae7f7.jpg)
Creo que este ejemplo perfecto de solucionar conflictos se queda supremamente corto a lo que pasa en la vida real, mínimo deberías tener un conflicto que no se pueda solucionar y mostrar que a veces debes mantener ciertas versiones lockeadas, porque si haces esa actualización puedes romper todo el código y por ello debes ser extremadamente cauteloso al correr fix o fix --force, este tipo de clases deben llevar esas banderas obligatoriamente!
minuto 0:39 jajaja, al día de hoy, 2024, el proyecto tiene 28 vulnerabilidades altas o.O
**ACTUALIZACIÓN DE DEPENDENCIAS** *La **actualización** de **dependencias** es un **proceso** **crucial** en el **mantenimiento** de **proyectos** de **software**, **asegurando** que **todas** las **librerías** y **paquetes** **utilizados** estén al **día** con las **últimas** **mejoras** y **correcciones** de **seguridad**. Es **importante** **manejar** las **actualizaciones** de manera **cuidadosa**, **revisando** las **notas** de las **versiones** **nuevas** para **identificar** **cambios** **significativos** o **incompatibilidades** **potenciales**. **Mantener** las **dependencias** **actualizadas** **no solo mejora** la **seguridad** y el **rendimiento** del **proyecto**, **sino** que **también** **garantiza** la **compatibilidad** con las **nuevas** **versiones** del **entorno** de **ejecución** y **otras** **librerías**.*
Que bien esta clase, siempre me preguntaba como se quitaban esos errores y también omitía esa parte por miedo a dañar algo.
La seguridad y la resolución de problemas son aspectos críticos en el desarrollo de software, y npm proporciona herramientas y prácticas recomendadas para abordar estos aspectos. Aquí te muestro cómo puedes mejorar la seguridad y resolver problemas relacionados con npm: ### Seguridad de las dependencias * **Auditoría de seguridad**: npm proporciona una herramienta de auditoría de seguridad que te permite verificar si las dependencias de tu proyecto tienen vulnerabilidades conocidas. Puedes ejecutar el siguiente comando para realizar una auditoría de seguridad:bash Copy codenpm audit * **Solución de vulnerabilidades**: Si la auditoría revela vulnerabilidades en las dependencias, puedes intentar solucionarlas utilizando el siguiente comando:bash Copy codenpm audit fix * **Actualización regular de dependencias**: Mantener tus dependencias actualizadas a las últimas versiones puede ayudar a mitigar las vulnerabilidades conocidas. ### Resolución de problemas comunes * **Búsqueda de errores en la ejecución de scripts**: Si encuentras problemas al ejecutar scripts, verifica la salida detallada utilizando la bandera `--verbose`. Por ejemplo:bash Copy codenpm run mi\_script --verbose * **Reinstalación de dependencias**: Si experimentas problemas con alguna dependencia, puedes intentar eliminar la carpeta `node_modules` y reinstalar las dependencias con el comando `npm install`. * **Limpieza de caché**: En algunos casos, problemas relacionados con la caché de npm pueden causar errores. Puedes limpiar la caché utilizando el siguiente comando:bash Copy codenpm cache clean --force ### Verificación de integridad de paquetes * **Verificación de integridad**: Puedes verificar la integridad de los paquetes instalados utilizando el comando `npm audit`. Esto te permitirá detectar posibles problemas de integridad en los paquetes instalados.

npm audit

npm tiene una miriada de paquetes disponibles lo que es una gran característica indicando lo saludable del ecosistema que es capaz de generar nuevas librerías a gran velocidad, pero también puede ser un problema. npm puede albergar paquetes maliciosos o con problema de seguridad.

La organización trás npm mantiene una lista de agujeros de seguridad y puedes utilizar este comando para revisar tus dependencias.

npm audit te entregará información de las vulnerabilidades encontradas en tus dependencias junto con una breve descripción de como resolverlo indicando la versión que corrige el defecto.

Excelente clase, me ha dejado mucho mas tranquilo a la hora de poder manejar errores

Críticamente lo tienes que resolver
No te lo puedes pasar por Alto
y moderamente los puedes ignorar (?)

Es como arreglar un cubo de rubix en sus ultimos pasos:
🟧🟧🟧🟧
🟩🟩🟩🟩
🟨🟨🟨🟨
⬜⬜⬜⬜

hola, deberia haber alguna clase que hable sobre esta situacion:
semver <7.5.2
Severity: moderate
semver vulnerable to Regular Expression Denial of Service - https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
No fix available

Fix dependencies

Quizás pueda servir escribir el siguiente código;

npm update

También recordar que si quieres instalar alguna versión específica utilizas el comando npm install package-name@version