Estos podrían ser anuncios externos. Por lo tanto, podrían ser del tipo en el que haces clic en ellos y te redirigen a otro sitio. Y el proceso de registrar eso y rastrear el aspecto monetario, como los clics y cuánto dinero se genera realmente, todo se hace mediante proyectos de código abierto.
En lugar de, ya sabes, si nos sentáramos y dijéramos, quiero design un nuevo sitio web desde cero. Y quiero que se vea así. No tendrías que empezar realmente desde cero. Comenzarías a implementar diferentes tipos de paquetes de código abierto para automatizar gran parte del trabajo que implica esto.
Entonces, lo que eso realmente significa en términos de realidad es que cuando realmente piensas en tu aplicación y cómo funciona, es como una gran parte de, data y capacidad y potencia bruta que esta aplicación tiene como una aplicación web. Pero en realidad, las cosas reales a las que estás contribuyendo y las formas en que estás manipulando las cosas son una parte muy pequeña de la imagen general de cómo fluye data en toda la aplicación.
Y es realmente útil poder hacer esto de la manera en que hemos explicado cómo puedes iniciar rápidamente algo o replicar rápidamente algo así, y transmitir esa función. Pero también significa que no tienes que ser dueño de todo el sitio en el sentido de que no tienes que ser responsable de cómo funciona el carrito y cómo funciona Elasticsearch. Si hay algún problema con eso, como... como errores o alguna vulnerabilidad de security, tú, como desarrollador que construyó ese sitio web, no eres el único responsable de todo porque es impulsado por la community.
Entonces, es algo donde, ya sabes, tienes la capacidad de obtener ayuda técnica de la comunidad y ese tipo de soporte en cuanto a solucionar problemas. Pero también puede resultar un poco aterrador, de lo cual hablaremos más adelante.
Esto es un poco sobre cómo puedes ver que NPM y el código abierto en general han despegado en los últimos años. Puedes ver que NPM en particular está ganando mucha popularidad en cuanto a la cantidad de nuevos paquetes que se crean en esa región cada año, donde en este momento, tienes alrededor de 1.8 millones de paquetes de código abierto que se están utilizando actualmente. Obviamente, también hay vulnerabilidades en ellos.
Lo que esta estadística muestra aquí es la cantidad de vulnerabilidades que se pueden encontrar en dependencias indirectas. Lo que quiero decir con eso es específicamente... Si tienes en cuenta que el 86% de todas las vulnerabilidades se encuentran en dependencias indirectas, si muestro esta diapositiva, debería quedar claro qué es una dependencia. En este caso, tengo un paquete llamado express, que llama a accepts, que llama a MIME, que llama a MIME DB.
Lo que esto es efectivamente, si puedes imaginarlo, digamos que soy un niño y mis padres están fuera de la ciudad durante el fin de semana, y estoy invitando a un amigo. Eso podría ser mi express en este caso. Confío en él. Lo conozco desde la infancia. Me siento cómodo dejándolo entrar a mi casa. Luego trae a un invitado. Y pienso, oh, está bien, confío en su juicio. Él respalda a este personaje, lo dejaré entrar. Luego, el invitado trae a otro invitado, y luego los invitados traen a otro invitado más. Entonces terminas con esta serie de incertidumbre creciente en cuanto a lo que realmente estás introduciendo en tu aplicación y en lo que no puedes ver realmente y tener confianza en sus estándares de security y sus prácticas en general.
Eso es básicamente lo que sucede cuando vemos, cuando analizamos todas las vulnerabilidades aquí, donde puedes confiar en la dependencia principal que tienes dentro de tu paquete. Puedo confiar en express en este caso, pero la realidad es que no puedo ver todas las dependencias de tránsito que express estará incorporando fácilmente. Tampoco puedo verificar y examinar la security de todas ellas. Al final, te encuentras en una situación en la que simplemente hay mucha incertidumbre en la seguridad general de esa aplicación.
La pregunta entonces es, hemos tenido en cuenta cuáles son los riesgos de usar código abierto, y también hemos considerado los beneficios de usarlo. La pregunta ahora es, ¿cuál es la postura general de seguridad al usar código abierto? Básicamente, de la misma manera en que obtienes valor de la comunidad a través del código abierto, también tienes personas que contribuyen a bases de datos que contienen información sobre vulnerabilidades.
Efectivamente, la respuesta a cómo podemos confiar en las cosas es básicamente confiar nuevamente en otros para proporcionar datos de vulnerabilidad de código abierto. Las personas son muy abiertas a hacer esto y también son muy proactivas al respecto. Pero debe hacerse de una manera en la que realmente puedas tener visibilidad también porque no vas a sentarte allí y simplemente observar todos los hilos y ordenar los diferentes paquetes que estás utilizando en GitHub porque nadie tiene tiempo para eso. Al final del día, tienes una vida.
Hablaremos un poco sobre cómo se ve eso con Sneak en general, y hay otras herramientas y formas de hacerlo, pero lo dejaremos para el final. Lo dejaremos para el final por ahora.
En este momento, vamos a hacer un poco de preguntas y respuestas o un poco de adivinar el número. Entonces, la pregunta aquí es, ¿cuál es el porcentaje de paquetes en npm que no tienen dependencias ni dependientes? Estos son en este caso paquetes que están solos y luego no tienen, okay, el 6% proviene de pizza, el 12%. Estas son cosas que son independientes, no necesitas nada para ejecutarlas, y no las utiliza nadie más. Entonces, el 28% de los paquetes en realidad no utilizan ningún tipo de dependencia y tampoco tienen dependencias basadas en ellos. Pero estas no son necesariamente los paquetes más populares.
Comments