Digamos que el nombre no es ahora Gibson Explorer. Volvamos aquí, ¿verdad? Ya no es Gibson Explorer. Eso va a ser, de nuevo, esa cosa que vimos. Bueno, hagamos, no sé, bueno, hagamos. Quiero decir, JavaScript alert no funcionará allí. Eso no es un enlace, así que puedo probar este vector en su lugar, como alerta y ver qué pasa. Y lo cambié, pero quiero decir, no hay alerta. Ni siquiera veo una etiqueta de imagen, así que está bien. Probemos algo más.
Lo que diría es, no recuerdo qué estaba aquí, así que simplemente haré ABC, pero digamos esto, sabes, si estuviera pensando en cómo explotar esto, diría, si este paquete fue escrito por alguien, tal vez no se cuidó lo suficiente de sanear los datos o codificarlos para su salida al entrar en todos los elementos recursivos que realmente están dentro del JSON, así que todos los elementos que están viviendo dentro de otros campos en otros campos. ¿Qué pasaría si intentara ponerlo aquí? Tal vez este nivel en el JSON está saneado, pero este no lo está, o codificado para su salida sería la mejor manera de hacer esto. Pero parece que lo está. Así que eso parece estar bien. Así que volvemos a la normalidad. Ahora, parece que esto está funcionando, y si esta es una entrada JSON de un paquete NPM que también obtienes, que no está controlado por ti, que está controlado por alguien más, ¿verdad? ¿Qué pasaría si esa persona te da un mal paquete JSON, verdad? Como voy a ir y hacer algo como esto y decir, hey, como estás obteniendo este paquete JSON. Ahí lo tienes. Así que manifiesto del paquete. Ahí lo tienes. Ahora, ya no es un JSON. Ahora es una cadena. Es una cadena, que yo controlo, porque puedo definir lo que quiera en mi paquete JSON y el mío es solo un archivo TAR y te lo enviaré, ¿verdad? Así que si esta es la entrada ahora, veamos qué pasa. Cambió todo el significado de lo que es el paquete JSON, pero la pregunta es, ¿está la aplicación preparada para manejar algo así? No parece que lo esté, porque parece que intenta renderizarlo. Probablemente deberías haber puesto una caja de alerta en algún lugar allí. Y alertaré, en nuestra alerta, probablemente debería haber funcionado. Oh, ahí vamos. Así que ahora vemos lo que está pasando, ¿verdad? Así que ahora estás usando un componente, una biblioteca de código abierto que puede tener vulnerabilidades en ella, aunque estabas pensando que podría estar bien, sabes, probablemente, sabes, bueno, probablemente no lo está, pero no, tienes que probar todas esas cosas. Así que nos lleva al mundo de, sabes, gestionar componentes, aprender sobre todas esas cosas. Así que aquí están mis conclusiones.
Volvamos a las diapositivas. Sí, ahí vamos. Así que conclusiones para nosotros, ¿verdad? Esto es, sabes, evita todo esto, sabes, peligrosamente interno HTML, obviamente no quieres hacer esto, pero el hecho de que lo estés evitando no significa que los demás también lo estén evitando, como hemos visto aquí. Así que realmente deberías escanear tus dependencias de terceros si estás haciendo algo como npm audit, sabes, eso está bien. Es una gran manera de, sabes, tomar conciencia de las seguridad vulnerabilidades. Pero en mi caso, descubrí cuando estaba usando React.JSON en mi demo aquí es que no lo encontró cuando estaba haciendo npm install y npm audit, nada aparecía para él. Sabes, afortunadamente estaba usando una prueba de Snyk y pude encontrarlo. Así que ten en cuenta lo que estás metiendo en esto, si tengo que resumir, ¿verdad? Ten en cuenta lo que estás metiendo en tus, diría dependencias en general, colección de bibliotecas o tus aplicaciones, componentes, ten en cuenta lo que estás poniendo allí, ser capaz de escanearlo todo el tiempo y arreglarlo. Y la otra cosa es, por supuesto, ten cuidado con lo que pones en esos atributos href html porque no se codifican por defecto. Así que gracias, React, como diría, React de manera responsable y segura. Y si quieres ponerte en contacto, soy Liran Tal, gracias y que tengas un buen tiempo, Adiós.
Comments