SlideShare a Scribd company logo
1 of 21
Programación Defensiva Barrios, José – Blondell, Reinaldo – Colmenares, Franyelvis – Rivero, Joselin
Ley de Murphy "Si hay varias maneras de hacer una tarea, y uno  de estos caminos conduce al desastre, entonces  alguien utilizará ese camino.” «Si algo puede salir mal, saldrá mal» Se tiende a recordar más vívidamente las veces en que cayó con el lado de la mantequilla hacia el suelo puesto que tiene mas consecuencias Por lo tanto, se tiene la impresión de que el pan siempre cae con la mantequilla hacia abajo, sin importar la verdadera probabilidad de cada ocurrencia. Joselin Rivero
Origen La auténtica ley de Murphy, originó una técnica de diseño llamada Diseño Defensivo Busca prever soluciones para evitar fallos en la utilización de un dispositivo que puedan llevar a un resultado inesperado. En la actualidad, vemos ejemplos de diseños realizados teniéndola en cuenta: Un cable USB, HDMI, SCART...  Están diseñados para que sólo pueda conectarse de forma correcta Joselin Rivero
Programación Defensiva Proyecto que solicitaba la ubicación del usuario para su localización en un mapa.  Se decidió utilizar los campos "país" y "población", pero al poco tiempo se detecto  que algunos usuarios confundían población con número de habitantes si se situaba junto a país. Para ese momento, ya habían varios usuarios registrados de los cuáles no se sabía su población. El problema se soluciono cambiando la palabra "población" por "localidad" en el formulario.  Pero era evitable si se hubiese  tenido más en cuenta la programación defensiva validando mejor los campos del formulario. Joselin Rivero
¿Qué es? Prevé y Busca soluciones que puedan evitar fallos en el diseño de un software  Garantiza el funcionamiento esperado de algún elemento de la aplicación ante cualquier situación que pueda aparecer, por muy extraño que sea. Joselin Rivero
Utilidad Objetivos – Problemas que Resuelve Joselin Rivero
Utilidad Apunta a resolver problemas asociados con la calidad del software en todas sus fases Reinaldo Blondell
SANS ,[object Object]
Agrupa a más de 165.000 profesionales de la seguridad informática (consultores,  administradores de sistemas, entes gubernamentales, etc.)
Reunir información sobre todo lo referente a seguridad informática (sistemas operativos, redes, aplicaciones, etc.)
Ofrecer capacitación y certificación en el ámbito de la seguridad informática
Referencia habitual en la prensa sobre temas de auditoría informáticaReinaldo Blondell
¿Por qué? ,[object Object]
ISO 27001NO VERIFICACION de los parámetros de ENTRADA y SALIDA de las funciones de nuestros programas 12.2.1: El insumo de data en las aplicaciones debe ser validado para asegurar que esta data sea correcta y apropiada. 12.2.2, 12.2.3 y 12.2.4: Que no hayan errores, integridad y validar output. Reinaldo Blondell
¿Qué es una Vulnerabilidad? Es cualquier defecto en el mismo que permita explotarlo con el fin de que un atacante pueda hacerse con el control del sistema ,[object Object]
Una mala configuración del software por parte del administrador/usuario.
Una incorrecta programación durante el proceso de desarrollo o actualización del software.
La gran mayoría hoy en día se deben al segundo caso ya que:
Existe bastante documentación de usuario para configurar el software.
Desconocimiento de seguridad informática en la mayoría de programadores.
Empresarios que interrumpen los ciclos de desarrollo del software para terminar antes los productos.

More Related Content

What's hot

What's hot (20)

Guía del PMBOK® > Gestión de la Calidad
Guía del PMBOK® > Gestión de la CalidadGuía del PMBOK® > Gestión de la Calidad
Guía del PMBOK® > Gestión de la Calidad
 
Gestion de los costos del proyecto
Gestion de los costos del proyectoGestion de los costos del proyecto
Gestion de los costos del proyecto
 
Taller de WBS. Una aproximación práctica y sencilla.
Taller de WBS. Una aproximación práctica y sencilla.Taller de WBS. Una aproximación práctica y sencilla.
Taller de WBS. Una aproximación práctica y sencilla.
 
Introduccion a Personal Software Process
Introduccion a Personal Software ProcessIntroduccion a Personal Software Process
Introduccion a Personal Software Process
 
Cocomo 1 y cocomo 2
Cocomo 1 y  cocomo 2Cocomo 1 y  cocomo 2
Cocomo 1 y cocomo 2
 
FTTH: Monetización de la Red
FTTH: Monetización de la RedFTTH: Monetización de la Red
FTTH: Monetización de la Red
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Requerimientos del software
Requerimientos del software Requerimientos del software
Requerimientos del software
 
Firewall
FirewallFirewall
Firewall
 
Calidad Del Producto Software
Calidad Del Producto SoftwareCalidad Del Producto Software
Calidad Del Producto Software
 
Plan de gestion_de_proyecto_-_ejemplo
Plan de gestion_de_proyecto_-_ejemploPlan de gestion_de_proyecto_-_ejemplo
Plan de gestion_de_proyecto_-_ejemplo
 
Project charter v1.1
 Project charter v1.1 Project charter v1.1
Project charter v1.1
 
Matriz de trazabilidad
Matriz de trazabilidadMatriz de trazabilidad
Matriz de trazabilidad
 
Guia iso 9126
Guia iso 9126Guia iso 9126
Guia iso 9126
 
PMI Beneficios
PMI BeneficiosPMI Beneficios
PMI Beneficios
 
ANSI TIA/EIA 568 B
ANSI TIA/EIA 568 BANSI TIA/EIA 568 B
ANSI TIA/EIA 568 B
 
COCOMO
COCOMOCOCOMO
COCOMO
 
Como construir una roseta rj45 hembra - taringa!
Como construir una roseta rj45   hembra - taringa!Como construir una roseta rj45   hembra - taringa!
Como construir una roseta rj45 hembra - taringa!
 
IIS Unidad1: Introducción a la Ingeniería de Software
IIS Unidad1: Introducción a la Ingeniería de SoftwareIIS Unidad1: Introducción a la Ingeniería de Software
IIS Unidad1: Introducción a la Ingeniería de Software
 
Xp
XpXp
Xp
 

Similar to Programación Defensiva

Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Websec México, S.C.
 
Diapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosDiapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosMelissa Burgos
 
Zeety lineamientos de trabajo
Zeety   lineamientos de trabajoZeety   lineamientos de trabajo
Zeety lineamientos de trabajogrupozeety
 
Seguridad_Informatica_1.pptx
Seguridad_Informatica_1.pptxSeguridad_Informatica_1.pptx
Seguridad_Informatica_1.pptxLuis Manotas
 
Informe Campus Party 2013
Informe Campus Party 2013Informe Campus Party 2013
Informe Campus Party 2013JannethGS
 
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdfCarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdfssuser7ccf16
 
Control de riesgos
Control de riesgosControl de riesgos
Control de riesgoscesar
 
La ingeniería del software en España: retos y oportunidades
La ingeniería del software en España: retos y oportunidadesLa ingeniería del software en España: retos y oportunidades
La ingeniería del software en España: retos y oportunidadesAntonio Vallecillo
 
Plantilla modelo-del-proceso-software
Plantilla modelo-del-proceso-softwarePlantilla modelo-del-proceso-software
Plantilla modelo-del-proceso-softwareErminson Victoria
 
Taller Virtual de Pentesting contra Aplicaciones Web
Taller Virtual de Pentesting contra Aplicaciones WebTaller Virtual de Pentesting contra Aplicaciones Web
Taller Virtual de Pentesting contra Aplicaciones WebAlonso Caballero
 
SeccióN De TéCnicas De IngenieríA De Software(2007)
SeccióN De TéCnicas  De IngenieríA De Software(2007)SeccióN De TéCnicas  De IngenieríA De Software(2007)
SeccióN De TéCnicas De IngenieríA De Software(2007)denny osael lopez medina
 
Entornos de desarrollo: Desarrollo de Software
Entornos de desarrollo: Desarrollo de SoftwareEntornos de desarrollo: Desarrollo de Software
Entornos de desarrollo: Desarrollo de SoftwareIsabel Gómez
 

Similar to Programación Defensiva (20)

Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
 
Diapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosDiapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgos
 
Zeety lineamientos de trabajo
Zeety   lineamientos de trabajoZeety   lineamientos de trabajo
Zeety lineamientos de trabajo
 
Campus party 2013
Campus party 2013Campus party 2013
Campus party 2013
 
Seguridad_Informatica_1.pptx
Seguridad_Informatica_1.pptxSeguridad_Informatica_1.pptx
Seguridad_Informatica_1.pptx
 
01 ingsoft jdchc
01 ingsoft jdchc01 ingsoft jdchc
01 ingsoft jdchc
 
Informe Campus Party 2013
Informe Campus Party 2013Informe Campus Party 2013
Informe Campus Party 2013
 
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdfCarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
 
Proyecto2
Proyecto2Proyecto2
Proyecto2
 
Bolanos marco tarea1
Bolanos marco tarea1Bolanos marco tarea1
Bolanos marco tarea1
 
Control de riesgos
Control de riesgosControl de riesgos
Control de riesgos
 
La ingeniería del software en España: retos y oportunidades
La ingeniería del software en España: retos y oportunidadesLa ingeniería del software en España: retos y oportunidades
La ingeniería del software en España: retos y oportunidades
 
Trabajo no 6
Trabajo no 6Trabajo no 6
Trabajo no 6
 
Plantilla modelo-del-proceso-software
Plantilla modelo-del-proceso-softwarePlantilla modelo-del-proceso-software
Plantilla modelo-del-proceso-software
 
Taller Virtual de Pentesting contra Aplicaciones Web
Taller Virtual de Pentesting contra Aplicaciones WebTaller Virtual de Pentesting contra Aplicaciones Web
Taller Virtual de Pentesting contra Aplicaciones Web
 
SeccióN De TéCnicas De IngenieríA De Software(2007)
SeccióN De TéCnicas  De IngenieríA De Software(2007)SeccióN De TéCnicas  De IngenieríA De Software(2007)
SeccióN De TéCnicas De IngenieríA De Software(2007)
 
Developers: Ignorance is... bliss?
Developers: Ignorance is... bliss?Developers: Ignorance is... bliss?
Developers: Ignorance is... bliss?
 
Ing. de software
Ing. de softwareIng. de software
Ing. de software
 
Ingenieria de Software
Ingenieria de Software Ingenieria de Software
Ingenieria de Software
 
Entornos de desarrollo: Desarrollo de Software
Entornos de desarrollo: Desarrollo de SoftwareEntornos de desarrollo: Desarrollo de Software
Entornos de desarrollo: Desarrollo de Software
 

More from jgbd127

Sistemas Económicos
Sistemas EconómicosSistemas Económicos
Sistemas Económicosjgbd127
 
Diseño del Proceso en Administración de Operaciones
Diseño del Proceso en Administración de OperacionesDiseño del Proceso en Administración de Operaciones
Diseño del Proceso en Administración de Operacionesjgbd127
 
Cambios e Innovaciones en la Administración
Cambios e Innovaciones en la AdministraciónCambios e Innovaciones en la Administración
Cambios e Innovaciones en la Administraciónjgbd127
 
ISO 9000
ISO 9000ISO 9000
ISO 9000jgbd127
 
Casos de Uso
Casos de UsoCasos de Uso
Casos de Usojgbd127
 
Software Propietario vs Libre
Software Propietario vs LibreSoftware Propietario vs Libre
Software Propietario vs Librejgbd127
 
Herramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de InformaciónHerramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de Informaciónjgbd127
 
La Quinta Anauco
La Quinta AnaucoLa Quinta Anauco
La Quinta Anaucojgbd127
 
Sistemas de Comunicación
Sistemas de ComunicaciónSistemas de Comunicación
Sistemas de Comunicaciónjgbd127
 
PMI PMBook
PMI PMBookPMI PMBook
PMI PMBookjgbd127
 
Evaluación de la Información
Evaluación de la InformaciónEvaluación de la Información
Evaluación de la Informaciónjgbd127
 
Medidas de Dispersión o Variabilidad
Medidas de Dispersión o VariabilidadMedidas de Dispersión o Variabilidad
Medidas de Dispersión o Variabilidadjgbd127
 
Parque Nacional Venezuela
Parque Nacional VenezuelaParque Nacional Venezuela
Parque Nacional Venezuelajgbd127
 
Prevención Integral
Prevención IntegralPrevención Integral
Prevención Integraljgbd127
 
Venezuela
VenezuelaVenezuela
Venezuelajgbd127
 
El Disco Duro
El Disco DuroEl Disco Duro
El Disco Durojgbd127
 

More from jgbd127 (19)

Sistemas Económicos
Sistemas EconómicosSistemas Económicos
Sistemas Económicos
 
Diseño del Proceso en Administración de Operaciones
Diseño del Proceso en Administración de OperacionesDiseño del Proceso en Administración de Operaciones
Diseño del Proceso en Administración de Operaciones
 
Cambios e Innovaciones en la Administración
Cambios e Innovaciones en la AdministraciónCambios e Innovaciones en la Administración
Cambios e Innovaciones en la Administración
 
PHP
PHPPHP
PHP
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
ISO 9000
ISO 9000ISO 9000
ISO 9000
 
Casos de Uso
Casos de UsoCasos de Uso
Casos de Uso
 
Software Propietario vs Libre
Software Propietario vs LibreSoftware Propietario vs Libre
Software Propietario vs Libre
 
Flash
FlashFlash
Flash
 
Herramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de InformaciónHerramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de Información
 
La Quinta Anauco
La Quinta AnaucoLa Quinta Anauco
La Quinta Anauco
 
Sistemas de Comunicación
Sistemas de ComunicaciónSistemas de Comunicación
Sistemas de Comunicación
 
PMI PMBook
PMI PMBookPMI PMBook
PMI PMBook
 
Evaluación de la Información
Evaluación de la InformaciónEvaluación de la Información
Evaluación de la Información
 
Medidas de Dispersión o Variabilidad
Medidas de Dispersión o VariabilidadMedidas de Dispersión o Variabilidad
Medidas de Dispersión o Variabilidad
 
Parque Nacional Venezuela
Parque Nacional VenezuelaParque Nacional Venezuela
Parque Nacional Venezuela
 
Prevención Integral
Prevención IntegralPrevención Integral
Prevención Integral
 
Venezuela
VenezuelaVenezuela
Venezuela
 
El Disco Duro
El Disco DuroEl Disco Duro
El Disco Duro
 

Programación Defensiva

  • 1. Programación Defensiva Barrios, José – Blondell, Reinaldo – Colmenares, Franyelvis – Rivero, Joselin
  • 2. Ley de Murphy "Si hay varias maneras de hacer una tarea, y uno de estos caminos conduce al desastre, entonces alguien utilizará ese camino.” «Si algo puede salir mal, saldrá mal» Se tiende a recordar más vívidamente las veces en que cayó con el lado de la mantequilla hacia el suelo puesto que tiene mas consecuencias Por lo tanto, se tiene la impresión de que el pan siempre cae con la mantequilla hacia abajo, sin importar la verdadera probabilidad de cada ocurrencia. Joselin Rivero
  • 3. Origen La auténtica ley de Murphy, originó una técnica de diseño llamada Diseño Defensivo Busca prever soluciones para evitar fallos en la utilización de un dispositivo que puedan llevar a un resultado inesperado. En la actualidad, vemos ejemplos de diseños realizados teniéndola en cuenta: Un cable USB, HDMI, SCART... Están diseñados para que sólo pueda conectarse de forma correcta Joselin Rivero
  • 4. Programación Defensiva Proyecto que solicitaba la ubicación del usuario para su localización en un mapa. Se decidió utilizar los campos "país" y "población", pero al poco tiempo se detecto que algunos usuarios confundían población con número de habitantes si se situaba junto a país. Para ese momento, ya habían varios usuarios registrados de los cuáles no se sabía su población. El problema se soluciono cambiando la palabra "población" por "localidad" en el formulario. Pero era evitable si se hubiese tenido más en cuenta la programación defensiva validando mejor los campos del formulario. Joselin Rivero
  • 5. ¿Qué es? Prevé y Busca soluciones que puedan evitar fallos en el diseño de un software Garantiza el funcionamiento esperado de algún elemento de la aplicación ante cualquier situación que pueda aparecer, por muy extraño que sea. Joselin Rivero
  • 6. Utilidad Objetivos – Problemas que Resuelve Joselin Rivero
  • 7. Utilidad Apunta a resolver problemas asociados con la calidad del software en todas sus fases Reinaldo Blondell
  • 8.
  • 9. Agrupa a más de 165.000 profesionales de la seguridad informática (consultores,  administradores de sistemas, entes gubernamentales, etc.)
  • 10. Reunir información sobre todo lo referente a seguridad informática (sistemas operativos, redes, aplicaciones, etc.)
  • 11. Ofrecer capacitación y certificación en el ámbito de la seguridad informática
  • 12. Referencia habitual en la prensa sobre temas de auditoría informáticaReinaldo Blondell
  • 13.
  • 14. ISO 27001NO VERIFICACION de los parámetros de ENTRADA y SALIDA de las funciones de nuestros programas 12.2.1: El insumo de data en las aplicaciones debe ser validado para asegurar que esta data sea correcta y apropiada. 12.2.2, 12.2.3 y 12.2.4: Que no hayan errores, integridad y validar output. Reinaldo Blondell
  • 15.
  • 16. Una mala configuración del software por parte del administrador/usuario.
  • 17. Una incorrecta programación durante el proceso de desarrollo o actualización del software.
  • 18. La gran mayoría hoy en día se deben al segundo caso ya que:
  • 19. Existe bastante documentación de usuario para configurar el software.
  • 20. Desconocimiento de seguridad informática en la mayoría de programadores.
  • 21. Empresarios que interrumpen los ciclos de desarrollo del software para terminar antes los productos.
  • 22. Las auditorías de seguridad de código fuente apenas se practican.Reinaldo Blondell
  • 23. Vulnerabilidades y Puntos Críticos más comunes al crear aplicaciones Grupo de Vulnerabilidades mas importantes en la actualidad según SANS: Reinaldo Blondell
  • 24. Vulnerabilidades y Puntos Críticos Entre las 25 mas importantes existentes en la actualidad tenemos como referencia las siguientes: Defectos o fallas en la preservación de la estructura de las consultas SQL (SQL-injection). Fallas en la preservación de la estructura de las páginas web ( Cross-site Scripting) Control externo del estado de la aplicación (por ejemplo al utilizar cookies para mantener el estado). Inicialización defectuosa. Uso de un algoritmo criptográfico quebrado (obsoleto). Contraseñas establecidas en el código (hard-coded). Franyelvis Colmenares
  • 26. Ejemplo Asumir que el siguiente código está en una aplicación web y que existe un parámetro "nombreUsuario" Si el usuario escribe su "Alicia”, la aplicación generara una sentencia SQL correcta similar a la siguiente, donde se seleccionaría al usuario "Alicia“: Pero si un usuario malintencionado escribe como nombre de usuario Se generaría la siguiente consulta SQL La base de datos ejecutaría la consulta en orden, seleccionaría el usuario 'Alicia', borraría la tabla 'usuarios' y seleccionaría datos que quizá no están disponibles para los usuarios web comunes Franyelvis Colmenares
  • 27. Cómo evitar el SqlInjection Franyelvis Colmenares
  • 28. Políticas de Programación La primera cosa que se debe hacer es redactar una política de programación, que contenga: Las cosas que NO se deben hacer La existencia de patrones El know-how de la empresa o grupo de desarrolladores Explícitamente indicar la suma importancia del seguimiento de las reglas Complejidad ciclomática Técnicamente, se puede cumplir con estas reglas Logging (log4net, log4j) Peer review (revisión de pares) Try / catch Franyelvis Colmenares
  • 29. Logging Aproximadamente un 4% del código debe estar destinado a operaciones de logging (McConnell) Muy difícil enseñar a hacer buen logging, tiempo de aprendizaje aprox. 1 año. Mejor herramienta de logging: log4j / log4net: http://logging.apache.org Cada vez que ocurre una falla en el programa, podemos estar enterados por correo!! José Barrios
  • 30. Ejemplo Logging (log4net) protected void Logon_Click(object sender, EventArgs e) { log.Info("Trata de autenticarse: " + UserEmail.Text + "/********"); if (verificar(UserEmail.Text, UserPass.Text)) { log.Info("Usuario autenticado"); … // redirección o a Inicio } else { log.Error("Usuario " + UserEmail.Text + "/" + UserPass.Text + " incorrectos"); Msg.Text = "Nombre o Clave de Usuario son inválidos, o el usuario ha sido dado de baja"; } } José Barrios
  • 32. Recomendaciones Evitar los Errores clásicos de la Programación José Barrios
  • 33. Preguntas Gracias por su atención… El Equipo