Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Puntos débiles de prácticas comunes
en desarrollos Web
Gunnar Wolf
Desarrollador del proyecto Debian
Instituto de Investigaciones Económicas UNAM
Facultad de Ingeniería UNAM
21 de octubre, 2015
Contenidos
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
1 Panorama histórico
2 El ciclo de vida de un desarrollo
3 Bundling
4 Minicación
5 Fin
Antes de comenzar
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Daremos un breve recorrido por los últimos 25 años del
desarrollo de la Web, para apreciar cómo ha ido
incrementando la complejidad del entorno.
Particularmente, en cómo hay cada vez mayor diferencial
de impedancia entre desarrolladores, administradores de
sistemas e integradores.
Y si somos ambiciosos, apuntaremos a su disminución.
HTTP y la World Wide Web
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Tim Berners-Lee, CERN, 1989
Primer navegador, 1998
Sistema concebido para compartir documentos
estáticos interrelacionados (hipertexto → 1950s)
Esquema originalmente orientado al texto
Entorno académico
Mosaic Web Browser (1993): Primer navegador que
presenta junto texto e imágenes
1995: Internet para uso personal y comercial →
½Boom!
Contenido dinámico: CGI
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Wikimedia Commons
1993: El National Center for
Supercomputing Applications publica
la especicación para hacer llamadas
a ejecutables desde un servidor Web
Paso de parámetros al ambiente
Etiquetas para formularios
Nacimiento del contenido dinámico
CGI + DBMS = CMS
. . . Lento y plagado de problemas de
seguridad
Servidores de aplicación
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Servidor Web y servidor de aplicación se comunican
por un socket
Coldfusion, Java Servlets, mod_perl, FastCGI. . .
Separación de responsabilidades
Permite al mismo servidor ejecutar código bajo
diferentes permisos del sistema
Desacopla, reduce supercie de ataque
Mayor rapidez de respuesta
Evita la ejecución de un proceso por solicitud
. . . Invitación a la complejidad
Marcos de desarrollo Web (frameworks)
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Ya teniendo la infraestructura básica de un servidor
de aplicación, no tardaron en aparecer los
frameworks
Cientos de distintos frameworks, varios por lenguaje
Conocimiento no trasladable entre lenguajes,
incluso entre distintos marcos
Ofrecen al programador:
Integración entre componentes
Mayor automatización
Abstracción
Mapeadores objeto-relacionales
Persistencia
Velocidad de desarrollo
. . .
Comunidades de creadores
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Prácticamente todos los marcos han creado
comunidades de autores de código
Se nutren de ellas
Le dan mayor dinamismo al marco
Generan módulos que agregan funcionalidad
Generan arquitecturas de gestión de módulos
XMLHttpRequest / AJAX
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Javascript deja de ser el patito feo para ser parte del
engranaje fundamental
Por n, sitios Web plenamente dinámicos
Actualización parcial de las páginas
Explotación del DOM
Menor tiempo de satisfacción al click
Menor carga al servidor
No requiere regenerar los elementos constantes
Muchos nuevos frameworks y bibliotecas para
aprovechar esta nueva funcionalidad
El lado doloroso de AJAX
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Pérdida del URL como descriptor del contenido
Contenido oculto que requiere navegación
Nuevas categorías de vulnerabilidades
XSS, CSRF, inyección de encabezados, nuevas
posibilidades para MITM. . .
Muchos más puntos de costura para hacer un
análisis de riesgos al trasladar entidades entre capas
Flash
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Si no tienes nada bueno que decir de algo. . .
No digas nada
A algunos les gusta. . .
Por suerte está camino a la desaparición. . .
Lentamente. . .
Flash
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Si no tienes nada bueno que decir de algo. . .
No digas nada
A algunos les gusta. . .
Por suerte está camino a la desaparición. . .
Lentamente. . .
Flash
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Si no tienes nada bueno que decir de algo. . .
No digas nada
A algunos les gusta. . .
Por suerte está camino a la desaparición. . .
Lentamente. . .
Flash
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Si no tienes nada bueno que decir de algo. . .
No digas nada
A algunos les gusta. . .
Por suerte está camino a la desaparición. . .
Lentamente. . .
Flash
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Si no tienes nada bueno que decir de algo. . .
No digas nada
A algunos les gusta. . .
Por suerte está camino a la desaparición. . .
Lentamente. . .
Contenidos
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
1 Panorama histórico
2 El ciclo de vida de un desarrollo
3 Bundling
4 Minicación
5 Fin
Sobrecaracterizando
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Los caracteres reseñados en esta sección
son cticios (y pueden estar exagerados).
Cualquier parecido con la realidad es
mera coincidencia.
La visión del desarrollador (1)
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Flickr: aashehadeh
Resolver las necesidades del usuario
Empleamos las últimas versiones
de todo el stack
Mejorando usabilidad
Aumentando funcionalidad
La versión para la cual el autor
mantiene soporte
Única prioridad: La entrega (y, por
ende, un usuario contento y
satisfecho con lo pactado)
La visión del desarrollador (2)
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Mantenibilidad
Si se solicitan adecuaciones, se dará mantenimiento
al sistema
Mientras tanto, si funciona, no lo arregles
Despliegue
Documentación básica
. . . Con suerte cae en el ámbito del
administrador. . .
Seguridad
Emplear bibliotecas con buena trayectoria
demostrada
Es buena práctica, pero. . . ¾Hay procedimientos
para reaccionar ante amenazas imprevistas?
La visión del administrador de sistemas (1)
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Mantener a todos los sistemas ya
existentes funcionando en conjunto
Emplear el menor número posible
de versiones distintas
De ser posible, provistas y
gestionadas por la misma
distribución (al menos en el caso
de Linux)
Principal prioridad: No disrupción
de otros servicios
Neowin
Flickr: Aaron Muszalski
La visión del administrador de sistemas (2)
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Mantenibilidad
Software que me de conictos para su
mantenimiento no entra a mi sistema.
Todo debe ser actualizable de forma regular y
automática
Despliegue
Prueba de stress principal para cualquier desarrollo
Si el programador hizo un excelente trabajo,
veremos un despliegue decente
Seguridad
Múltiples sistemas coinstalados, responsabilidad
sobre un gran número de bellos y únicos copos de
nieve
Revisión proactiva y periódica (½con peligro real de
rechazo!) del software instalado
½DevOps al rescate!
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Popularización de los Development
and Operations
½Metodología ágil!
La tecnología al rescate
Pruebas extensivas
Integración continua
Empleo extensivo de
virtualización/contenedores para
el despliegue: Una máquina
virtual por aplicación
Wikipedia: Scrumban
Flickr: Paul Downey
DevOps: Crónica de un fracaso anunciado
Puntos débiles
de prácticas
comunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vida
de un desarrollo
Bundling
Minicación
Fin
Enfoque en la separación entre aplicaciones
Demasiadas máquinas virtuales → demasiadas
instalaciones independientes a mantener
Actualizaciones de seguridad: Siguen rom
Comentarios de: Puntos débiles de prácticas comunes en desarrollos Web (0)
No hay comentarios