Seguridad para desarrolladores
Contraseñas, tokens, inyecciones y los ataques que vas a sufrir, ejecutados por vos.
13 aulas · 8 horas de práctica · en el navegador, sin instalar nada
Temario
- Pensar como atacante — Superficie de ataque, modelo de amenazas, menor privilegio y defensa en profundidad: la forma de mirar un sistema que hace que el resto de la carrera tenga sentido.
- Contraseñas: hash, sal y costo — Por qué guardar una contraseña nunca es guardarla: hashear, salar cada una distinto, y hacer el cálculo deliberadamente lento.
- Fuerza bruta y rate limiting — Probar contraseñas hasta que una funcione es el ataque más simple que existe. Contar intentos y bloquear con espera creciente es la defensa.
- Taller — El login que aguanta — Un login de verdad, en chico: contraseñas con hash y sal, verificación en tiempo constante, y rate limiting con espera que se duplica en cada fallo.
- Inyección SQL — Armar una consulta pegando texto del usuario deja que ese texto reescriba la consulta entera. Los parámetros (`?`) son la única forma correcta de mezclar datos y SQL.
- XSS: cuando el navegador de otro ejecuta tu texto — Un comentario que nadie escapa se convierte en código que corre en el navegador de cualquiera que lo lea. `html.escape` y una lista blanca de etiquetas son la defensa.
- CSRF: el formulario que manda otro sitio — El navegador manda las cookies de sesión a cualquier sitio que se las pida, incluida una página ajena. Un token por sesión, verificado en el servidor, es lo que distingue un pedido real de uno forjado.
- Sesiones y tokens firmados — Un token no es una contraseña, pero si alguien lo puede fabricar o alterar sin que se note, da lo mismo. Firmarlo con hmac es lo que hace que manipularlo se note.
- Taller — El ataque — Ser el atacante primero: explotar inyección SQL, XSS y CSRF contra un sistema de juguete, uno por uno, y después parchear cada agujero.
- Autorización: el IDOR — Estar logueado no es lo mismo que tener permiso sobre ESE recurso puntual. El chequeo de dueño que nadie escribió es el agujero más común y más silencioso que existe.
- Secretos y configuración — Una clave escrita en el código vive para siempre en el historial de git, la vean o no la vean. Las variables de entorno, la rotación, y el log que sin querer las repite.
- Dependencias, logs y el checklist final — La cadena de suministro, las cabeceras que el navegador respeta, y el OWASP Top 10 como una lista de control final antes de decir que algo está listo para producción.
- Taller — La auditoría — Recorrer un sistema dado con el checklist de toda la carrera: credenciales, inyección, control de acceso. Un puntaje, una clasificación, y un informe.