Entonces, hola, mi nombre es Hendrik. Y antes de empezar, necesito decepcionarte un poco porque no voy a hablar sobre React hoy. Y aún peor, quiero hablar sobre la seguridad web. Así que espero que puedas disfrutar de mi charla.
Quiero contar una historia o compartir una historia contigo donde accidentalmente, y prometo accidentalmente, accedí a contenido bastante picante de fotos donde la gente mostraba juguetes sexuales o incluso consumía alcohol. ¿Qué ha pasado? Bueno, en octubre de 2022, visité una sala de escape con algunos amigos. Y después de la experiencia, un miembro del personal vino a nosotros e hizo una foto de grupo.
En nuestro caso, solo fue una aburrida foto de grupo. Y después de eso, nos dieron un pequeño pedazo de papel que parecía eso. Y en el pedazo de papel, estaba nuestro código generado aleatoriamente, así como la fecha de la experiencia, ¿verdad? La experiencia fue muy útil. Solo tenías que ir a la página web, ingresar tu código y boom, puedes encontrar las fotos puedes acceder fácilmente y prestarlas y compartirlas con tus amigos. Gran experiencia de usuario. ¿Qué podría salir mal aquí?
Bueno, es como quizás similar al gato, ¿verdad? Imagina que tienes una habitación y quieres proteger la habitación. Entonces la solución es, bueno, simplemente cierras la puerta y tu habitación está segura, ¿verdad? Hasta que el gato entiende cómo usar la manija de la puerta. Volviendo a mi historia, básicamente, yo era el gato y estaba jugando con la manija de la puerta para ver cómo funciona. Resulta que, en realidad, usaron un código bastante débil para proteger las fotos, ¿verdad? Era un código numérico de cinco dígitos, lo que significa que solo teníamos 90,000 códigos posibles por día. Y estoy bastante seguro de que cualquiera de ustedes podría escribir fácilmente un script para generar códigos. Y lo único que tienes que hacer es simplemente escribir otro script y enviar el formulario una y otra vez, y solo esperar encontrar un código real. Sí, tal vez eso es lo que hice. Y resulta que funciona. Y solo como una rápida comparación, puedes verlo aquí en la tabla. Si simplemente usas un código numérico de seis dígitos, ya aumentarías la complejidad a 900,000 códigos. Y para mí, siempre es como, piénsalo. Si te sentaras en nuestra reunión de diseño de productos, en algún momento tendrías que decidir, está bien, ¿qué tipo de código vamos a usar? Y eligieron uno numérico de cinco dígitos. Imagina si hubieran elegido el de seis dígitos o incluso incluido alfanumérico, habrían aumentado la complejidad bastante.
Entonces, incluso si tienes el código más fuerte del mundo, si me das suficiente computación, probablemente dinero y tiempo, todavía podría intentar encontrar códigos aleatorios. Por lo tanto, otro mecanismo que necesitamos es el throttling. El throttling significa que si recibes mucho tráfico proveniente de la misma dirección IP, probablemente en algún momento quieras limitar el tráfico o bloquear la dirección IP por completo. Y ese es un mecanismo bastante fuerte para prevenir ataques. ¿Y adivina qué? No implementaron ningún throttling.
Comments