LatamTour2013-TDSD

Test Driven Secure Development

Veremos el desarrollo de un sencillo sitio web de mensajes. En lugar de diseñar el sitio completo, implementarlo y testearlo, iremos resolviendo los requisitos y las vulnerabilidades mediante "baby steps", precedidos por los test, en un ciclo de "crear test", "fallar test", "implementar", "pasar test" y "refactorizar"

Algunos de los requisitos de nuestra aplicación serán:


 * Que reciba un mensaje
 * Que reciba mensajes de usuarios autenticados
 * Que persista los mensajes
 * Que el usuario se autentique una sola vez

Algunas de las vulnerabilidades que hallaremos y quizas resolveremos son:


 * SQL injection (A1)
 * Session Fixation (A2)
 * XSS (stored/reflected) (A3)
 * Insecure storage (sans 8/25 (cwe 311- missing encryption on sensitive data))

Herramientas:


 * Apache/Mysql/Php sin ningún tipo de framework para el desarrollo y shunit2 para el testing, considerando que es una combinación sencilla de mostrar y comprender.

Dependiendo del tiempo, veremos en mayor o menor profundidad


 * Wireshark/tshark
 * Tamper Data
 * wget
 * grep

Un conocimiento muy básico de desarrollo web mejora el aprovechamiento de la exposición, pero no es indispensable.