SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Seguridad en la Web
03 de mayo de 2015 Página 1 de 4
Metodologías de Desarrollo de Aplicaciones
Web Seguras
Introducción
Bien es sabido que ningún sistema del tipo que sea, basado en hardware o software, es
totalmente seguro, ya sea en mayor o menor medida pero todos resultan inseguros. Por
ello se la famosa frase del prestigioso profesor de ciencias computacionales Gene Spafford
quién dice que “El único sistema seguro es aquel que está apagado y desconectado, ente-
rrado en un refugio de cemento, rodeado por gas venenoso y custodiado por guardianes
bien pagados y muy bien armados. Aun así, yo no apostaría mi vida por él”.
Es por ello que desde hace ya varios años los desarrolladores han comenzado a prestar
atención en este aspecto y tratar de revisar aspectos de seguridad en sus aplicaciones, sin
embargo la técnica tradicional que comúnmente se ocupa es la de desarrollar y una vez
concluida la aplicación realizar pruebas de seguridad, sin embargo han comenzado a darse
cuenta que esto resulta problemático, difícil de llevar a cabo y sobre todo más caro, pues
las correcciones implican la reingeniería de la aplicación, y ello sin considerar que estos pro-
blemas son exponenciales al tamaño y robustez de la aplicación.
Con el paso del tiempo los desarrolladores han ido percibiendo estos problemas y han
intentado nuevas formas, al grado de establecer muy completas propuestas de procesos a
llevar a cabo para construir aplicaciones seguras, incluso al punto de crear metodologías
que han sido ampliamente usadas. Las metodologías de desarrollo para software seguro
suelen ser un complemento de las metodologías de desarrollo tradicionales, ya que se en-
focan estrictamente en la seguridad, y aunque la mayoría de estás metodologías son de
propósito general para cualquier tipo de sistema, lenguaje, plataforma o tecnología; tam-
bién se han llegado a crear metodologías para usos específicos, como el caso de OWASP
que se enfoca al entorno web. Así pues, por esta creciente preocupación por desarrollar
aplicaciones web más seguras es que en este documento se recopilan y describe de forma
breve las que se podrían considerar como las dos metodologías más influyentes.
1. Security Quality Requirements Engineering (SQUARE)
SQUARE es una metodología creada en 2005 por el equipo CERT del Software Engineering
Institute (SEI) que se centra en la obtención y análisis de requerimientos, por lo que es per-
fectamente aplicable a la fase inicial del proceso de desarrollo de un software bajo meto-
dología tradicional, o a lo largo de todo el desarrollo en el caso de metodologías ágiles. Así
que SQUARE resulta ideal pues la mayor parte de problemas de un software se encuentran
en la fase de requisitos por lo que en aspectos de seguridad, resultará bastante apropiada
su implementación.
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Seguridad en la Web
03 de mayo de 2015 Página 2 de 4
La razón por la que muchos proyectos de software fracasan o no alcanzan sus objetivos
iniciales es porque la fase de desarrollo que involucra la determinación, análisis y especifi-
cación fue llevada a cabo de forma escaza debido a su dificultad. Si a estos requisitos se le
suman los requisitos de seguridad, entonces el proceso se vuelve en una tarea aún más
difícil pero que bien vale la pena para lograr un software correcto, y en este caso, seguro,
pues precisamente SQUARE lo que plantea es establecer la seguridad desde las etapas tem-
pranas del ciclo de vida del desarrollo.
La metodología está basada en nueve pasos, los cuales se describen e el informe, se
indica su finalidad, las responsabilidades de los participantes, las técnicas que se pueden
emplear y resultados a obtener (Software Engineering Institute, 2005).
1. Establecer un vocabulario común.
2. Identificación de objetivos de seguridad.
3. Desarrollo de artefactos (escenarios, diseños, casos de mal uso, etc.)
4. Evaluación de riesgos
5. Elección de técnicas para obtener requisitos
6. Obtención de requisitos de seguridad
7. Clasificación de requisitos
8. Priorización de requisitos
9. Revisión de los requisitos
Se han creado diferentes informes sobre SQUARE, el primero describe la metodología,
el segundo muestra un ejemplo de la aplicación de la metodología a un sistema administra-
tivo y el cual puede servir de referencia para su implementación, y finalmente un tercer
informe presenta un caso de estudio donde se presentan los resultados después de haber
llevado a cabo la metodología con 3 clientes a lo largo de seis meses. SQUARE ha sido exi-
tosamente extendido que de hecho se ha incorporado en modelos del Ciclo de vida tradi-
cional, se le han creado métricas, evaluaciones de costos de adquisición, e incluso hecho
comparaciones con otras metodologías1.
2. Correctness by Construction (CbyC)
Por su parte CbyC es una metodología que desarrolló Praxis High Integrity Systems en 2001,
pero que está más orientada a la industria aeroespacial y sistemas críticos de seguridad, por
lo que bien puede ser implementada en cualquier otro contexto ya que combina los méto-
dos formales con el desarrollo ágil muy usado hoy en día. Con CbyC se busca desarrollar
desde un inicio sistemas de calidad y con requerimientos muy estrictos en seguridad lle-
gando a niveles extremadamente bajos de errores, ello gracias a que se basa en tres princi-
pios básicos (Build Security In, 2006):
1
Se puede consultar una amplia lista de informes con solo buscar “Security Quality Requirements Engineering“
en el sitio http://sei.cmu.edu/
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Seguridad en la Web
03 de mayo de 2015 Página 3 de 4
1. Hacer que sea muy difícil introducir errores
2. Asegúrese de que los errores se eliminan lo más cerca posible del punto de intro-
ducción, ya que se harán a pesar principio 1
3. Generar pruebas de aptitud para el uso en todo el desarrollo como un subproducto
natural del proceso (debido a que muestra que el sistema desarrollado es seguro o
seguro es a menudo más difícil de lo que es así).
En CbyC se logra la detección temprana de errores y alta seguridad gracias a las técni-
cas que plantea y que a su vez también son los componentes básicos del proceso, estos
procesos o actividades de la metodología son:
1. Planificación de procesos
2. Capacitación del personal y de competencias
3. Trazabilidad de requisitos desde la especificación de casos de código y prueba
4. Gestión de fallos
5. Gestión del cambio
6. Gestión de la configuración
7. Recolección de métricas
Por otro lado las técnicas empleadas durante los procesos son:
 Hacer anotaciones de sonido para disminuir ambigüedades en la especificación de
requisitos.
 Estricta validación de entregables en cada etapa de desarrollo.
 Desarrollo incremental, de forma que se escriba algo de código y se verifique.
 Evitar la repetición, pues si un requisito fue ambiguo entonces se repetirá el error.
 Hacerlo simple, pues de ello dependerá que las revisiones y desarrollo sean fáciles.
 Gestionar los riesgos para responder mejor ante incidencias.
 Pensar fuerte, para lograr los objetivos.
Así pues, CbyC es una excelente metodología pero no recomendada para todos los ca-
sos, sino para entornos que requieran demasiada seguridad, pues resulta demasiado es-
tricta y es necesario ceñirse específicamente a los procesos establecidos tanto en CbyC
como en la metodología de ingeniería de software usada, por lo que si el proceso de inge-
niería no se lleva a cabo correctamente, entonces no resulta viable usar CbyC.
3. Otras metodologías existentes
El análisis de resultados de Vega Zepeda (2011) recoge una lista de un par de metodologías
y varios procesos y mejoras de metodologías empleados para construir software seguro.
Entre ellos se pueden destacar el proceso de desarrollo propuesto por Apvrille y Pourzandi
que emplea el proceso de desarrollo iterativo adaptado con seguridad; el método Clean-
room que pretende lograr cero errores, es decir, más estricto que CbyC; también esta
RUPsec que es una extensión del Proceso de Desarrollo Unificado (RUP); CLASP es un mé-
todo que indica y documenta las actividades para hacer un software seguro.
Por: Héctor Garduño Real
Máster en Dirección e Ingeniería de Sitios Web
Seguridad en la Web
03 de mayo de 2015 Página 4 de 4
Referencias Bibliográficas
Build Security In. (05 de Mayo de 2006). Build Security In. Recuperado el 02 de Mayo de
2015, de Correctness by Construction: https://buildsecurityin.us-
cert.gov/articles/knowledge/sdlc-process/correctness-by-construction
navegapolis.net. (17 de Enero de 2006). Recuperado el 02 de Mayo de 2015, de SQUARE:
metodología para requisitos de seguridad:
http://www.navegapolis.net/content/view/238/52/
Software Engineering Institute. (Noviembre de 2005). Software Engineering Institute.
Recuperado el 02 de Mayo de 2015, de Security Quality Requirements Engineering:
http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=7657
Vega Zepeda, V. (Noviembre de 2011). Academia.edu. Obtenido de Ingeniería de
Requerimientos para Productos Seguros. Resultados de un Análisis Bibliográfico:
https://www.academia.edu/6997116/Ingenier%C3%ADa_de_Requerimientos_par
a_Productos_Seguros._Resultados_de_un_An%C3%A1lisis_Bibliogr%C3%A1fico

Más contenido relacionado

La actualidad más candente

Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos Tradicionales
Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos TradicionalesUnidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales
Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos TradicionalesSergio Sanchez
 
Modelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareModelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareWilliam Matamoros
 
Ingenieria de requisitos
Ingenieria de requisitosIngenieria de requisitos
Ingenieria de requisitosJoamarbet
 
Lenguaje de ensamblador
Lenguaje de ensambladorLenguaje de ensamblador
Lenguaje de ensambladorWilman Diaz
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaMichael de la Cruz
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensambladoriagardea
 
Virtualize of IO Devices .docx
Virtualize of IO Devices .docxVirtualize of IO Devices .docx
Virtualize of IO Devices .docxkumari36
 
Seguridad en los sistemas operativos
Seguridad en los sistemas operativosSeguridad en los sistemas operativos
Seguridad en los sistemas operativosjetmu
 
Metricas de software
Metricas de softwareMetricas de software
Metricas de softwaresophialara123
 

La actualidad más candente (20)

Modelos de proceso evolutivos – prototipos
Modelos de proceso evolutivos – prototiposModelos de proceso evolutivos – prototipos
Modelos de proceso evolutivos – prototipos
 
Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos Tradicionales
Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos TradicionalesUnidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales
Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos Tradicionales
 
Modelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareModelos o Ciclos de vida de software
Modelos o Ciclos de vida de software
 
Ingenieria de requisitos
Ingenieria de requisitosIngenieria de requisitos
Ingenieria de requisitos
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
 
Lenguaje de ensamblador
Lenguaje de ensambladorLenguaje de ensamblador
Lenguaje de ensamblador
 
ingenieria de software
ingenieria de softwareingenieria de software
ingenieria de software
 
Microondas por satelite
Microondas por sateliteMicroondas por satelite
Microondas por satelite
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación Estructurada
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Virtualize of IO Devices .docx
Virtualize of IO Devices .docxVirtualize of IO Devices .docx
Virtualize of IO Devices .docx
 
Seguridad en los sistemas operativos
Seguridad en los sistemas operativosSeguridad en los sistemas operativos
Seguridad en los sistemas operativos
 
Planificacion De Proyectos de SW
Planificacion De Proyectos de SWPlanificacion De Proyectos de SW
Planificacion De Proyectos de SW
 
IEEE 802.1x
IEEE 802.1xIEEE 802.1x
IEEE 802.1x
 
Metricas de software
Metricas de softwareMetricas de software
Metricas de software
 
Prototipo evolutivo
Prototipo evolutivoPrototipo evolutivo
Prototipo evolutivo
 
Investigacion unidad 3
Investigacion unidad 3Investigacion unidad 3
Investigacion unidad 3
 
Conceptos Basicos Int Ing Sistemas
Conceptos Basicos Int Ing SistemasConceptos Basicos Int Ing Sistemas
Conceptos Basicos Int Ing Sistemas
 
Metricas tecnicas del software
Metricas tecnicas del softwareMetricas tecnicas del software
Metricas tecnicas del software
 
Tipos de multiplexacion
Tipos de multiplexacionTipos de multiplexacion
Tipos de multiplexacion
 

Similar a Metodologías para desarrollar aplicaciones web seguras

Nexa metodologia watch. trabajo pptx
Nexa metodologia watch. trabajo pptxNexa metodologia watch. trabajo pptx
Nexa metodologia watch. trabajo pptxNexa Solorzano
 
pruebas de calidad.pdf
pruebas de calidad.pdfpruebas de calidad.pdf
pruebas de calidad.pdfChirmi1
 
Metodología tradicional
Metodología tradicionalMetodología tradicional
Metodología tradicionalJesenia Escobar
 
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrolloFundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrolloJosé Antonio Sandoval Acosta
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareAndres Valencia
 
Carrera de informatica_educativa
Carrera de informatica_educativaCarrera de informatica_educativa
Carrera de informatica_educativaDiego Sinche
 
Paso 8 actividad colaborativa - propuesta ampliada
Paso 8   actividad colaborativa - propuesta ampliadaPaso 8   actividad colaborativa - propuesta ampliada
Paso 8 actividad colaborativa - propuesta ampliadaCristiam Gomez Quijano
 
Metodología de desarrollo de software
Metodología de desarrollo de softwareMetodología de desarrollo de software
Metodología de desarrollo de softwareAbner Garcia
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de softwareCentro Líbano
 
CICLO DE VIDA DEL SOFTWARE - ROMULO MOLERO
CICLO DE VIDA DEL SOFTWARE - ROMULO MOLEROCICLO DE VIDA DEL SOFTWARE - ROMULO MOLERO
CICLO DE VIDA DEL SOFTWARE - ROMULO MOLERORomulo Molero
 
Metodologías para desarrollar(moviles )
Metodologías para desarrollar(moviles )Metodologías para desarrollar(moviles )
Metodologías para desarrollar(moviles )Fernand Bernowly
 
Trabajo de sistemas de software
Trabajo de sistemas de softwareTrabajo de sistemas de software
Trabajo de sistemas de softwareJhonJairoPerez
 

Similar a Metodologías para desarrollar aplicaciones web seguras (20)

Paso 9 actividad colaborativa
Paso 9   actividad colaborativaPaso 9   actividad colaborativa
Paso 9 actividad colaborativa
 
Nexa metodologia watch. trabajo pptx
Nexa metodologia watch. trabajo pptxNexa metodologia watch. trabajo pptx
Nexa metodologia watch. trabajo pptx
 
Ciclo de Vida de un Software.pdf
Ciclo de Vida de un Software.pdfCiclo de Vida de un Software.pdf
Ciclo de Vida de un Software.pdf
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
pruebas de calidad.pdf
pruebas de calidad.pdfpruebas de calidad.pdf
pruebas de calidad.pdf
 
Lacrest 2012
Lacrest 2012Lacrest 2012
Lacrest 2012
 
Metodología tradicional
Metodología tradicionalMetodología tradicional
Metodología tradicional
 
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrolloFundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_software
 
Carrera de informatica_educativa
Carrera de informatica_educativaCarrera de informatica_educativa
Carrera de informatica_educativa
 
Paso 8 actividad colaborativa - propuesta ampliada
Paso 8   actividad colaborativa - propuesta ampliadaPaso 8   actividad colaborativa - propuesta ampliada
Paso 8 actividad colaborativa - propuesta ampliada
 
Metodologia de software
Metodologia de softwareMetodologia de software
Metodologia de software
 
Proceso del software (Metodos Agiles)
Proceso del software (Metodos Agiles)Proceso del software (Metodos Agiles)
Proceso del software (Metodos Agiles)
 
Metodología de desarrollo de software
Metodología de desarrollo de softwareMetodología de desarrollo de software
Metodología de desarrollo de software
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de software
 
Proceso del software
Proceso del softwareProceso del software
Proceso del software
 
CICLO DE VIDA DEL SOFTWARE - ROMULO MOLERO
CICLO DE VIDA DEL SOFTWARE - ROMULO MOLEROCICLO DE VIDA DEL SOFTWARE - ROMULO MOLERO
CICLO DE VIDA DEL SOFTWARE - ROMULO MOLERO
 
Metodologías para desarrollar(moviles )
Metodologías para desarrollar(moviles )Metodologías para desarrollar(moviles )
Metodologías para desarrollar(moviles )
 
ciclo_de_vida_software
ciclo_de_vida_softwareciclo_de_vida_software
ciclo_de_vida_software
 
Trabajo de sistemas de software
Trabajo de sistemas de softwareTrabajo de sistemas de software
Trabajo de sistemas de software
 

Más de Héctor Garduño Real

Sistema para la Evaluación del Aprendizaje en entornos B-Learning
Sistema para la Evaluación del Aprendizaje en entornos B-LearningSistema para la Evaluación del Aprendizaje en entornos B-Learning
Sistema para la Evaluación del Aprendizaje en entornos B-LearningHéctor Garduño Real
 
Tesis - Fábrica de software Estado de México 2009
Tesis - Fábrica de software Estado de México 2009Tesis - Fábrica de software Estado de México 2009
Tesis - Fábrica de software Estado de México 2009Héctor Garduño Real
 
Asignatura: Interconectividad de Redes
Asignatura: Interconectividad de Redes Asignatura: Interconectividad de Redes
Asignatura: Interconectividad de Redes Héctor Garduño Real
 
Asignatura: Fundamentos de Redes de Computadoras
Asignatura: Fundamentos de Redes de ComputadorasAsignatura: Fundamentos de Redes de Computadoras
Asignatura: Fundamentos de Redes de ComputadorasHéctor Garduño Real
 
Asignatura: Introducción a las ciencias de la computación
Asignatura: Introducción a las ciencias de la computaciónAsignatura: Introducción a las ciencias de la computación
Asignatura: Introducción a las ciencias de la computaciónHéctor Garduño Real
 
Principales CMS y Estadísticas de uso
Principales CMS y Estadísticas de usoPrincipales CMS y Estadísticas de uso
Principales CMS y Estadísticas de usoHéctor Garduño Real
 
Práctica de instalación y uso de Joomla
Práctica de instalación y uso de JoomlaPráctica de instalación y uso de Joomla
Práctica de instalación y uso de JoomlaHéctor Garduño Real
 
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web ServicesPráctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web ServicesHéctor Garduño Real
 
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...Héctor Garduño Real
 
Análisis de lecturas sobre el Internet de las Cosas
Análisis de lecturas sobre el Internet de las CosasAnálisis de lecturas sobre el Internet de las Cosas
Análisis de lecturas sobre el Internet de las CosasHéctor Garduño Real
 
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0Héctor Garduño Real
 
Práctica de instalación y uso de Alfresco
Práctica de instalación y uso de AlfrescoPráctica de instalación y uso de Alfresco
Práctica de instalación y uso de AlfrescoHéctor Garduño Real
 
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)Héctor Garduño Real
 
Práctica en Joomla de reproductor de streaming de video y audio
Práctica en Joomla de reproductor de streaming de video y audioPráctica en Joomla de reproductor de streaming de video y audio
Práctica en Joomla de reproductor de streaming de video y audioHéctor Garduño Real
 
Informe de lectura de: Resumen del PMBOK v4 Dirección y Gestión de Proyectos
Informe de lectura de: Resumen del PMBOK v4 Dirección y Gestión de ProyectosInforme de lectura de: Resumen del PMBOK v4 Dirección y Gestión de Proyectos
Informe de lectura de: Resumen del PMBOK v4 Dirección y Gestión de ProyectosHéctor Garduño Real
 

Más de Héctor Garduño Real (20)

Sistema para la Evaluación del Aprendizaje en entornos B-Learning
Sistema para la Evaluación del Aprendizaje en entornos B-LearningSistema para la Evaluación del Aprendizaje en entornos B-Learning
Sistema para la Evaluación del Aprendizaje en entornos B-Learning
 
Tesis - Fábrica de software Estado de México 2009
Tesis - Fábrica de software Estado de México 2009Tesis - Fábrica de software Estado de México 2009
Tesis - Fábrica de software Estado de México 2009
 
Asignatura: Informática 1
Asignatura: Informática 1Asignatura: Informática 1
Asignatura: Informática 1
 
Asignatura: Interconectividad de Redes
Asignatura: Interconectividad de Redes Asignatura: Interconectividad de Redes
Asignatura: Interconectividad de Redes
 
Asignatura: Fundamentos de Redes de Computadoras
Asignatura: Fundamentos de Redes de ComputadorasAsignatura: Fundamentos de Redes de Computadoras
Asignatura: Fundamentos de Redes de Computadoras
 
Asignatura: Desarrollo Sustentable
Asignatura: Desarrollo SustentableAsignatura: Desarrollo Sustentable
Asignatura: Desarrollo Sustentable
 
Asignatura: Introducción a las ciencias de la computación
Asignatura: Introducción a las ciencias de la computaciónAsignatura: Introducción a las ciencias de la computación
Asignatura: Introducción a las ciencias de la computación
 
Principales CMS y Estadísticas de uso
Principales CMS y Estadísticas de usoPrincipales CMS y Estadísticas de uso
Principales CMS y Estadísticas de uso
 
Práctica de instalación y uso de Joomla
Práctica de instalación y uso de JoomlaPráctica de instalación y uso de Joomla
Práctica de instalación y uso de Joomla
 
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web ServicesPráctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
Práctica de Creación de Máquina Virtual con LAMP en Amazon Web Services
 
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
Práctica con WebGoat: HTTP Splitting, DoS, Ma-licious Execution e Injection F...
 
Análisis de lecturas sobre el Internet de las Cosas
Análisis de lecturas sobre el Internet de las CosasAnálisis de lecturas sobre el Internet de las Cosas
Análisis de lecturas sobre el Internet de las Cosas
 
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
Caso de éxito de IoT: Agricultura inteligente en Viñedos 2.0
 
Análisis del Whitepaper DB4O
Análisis del Whitepaper DB4OAnálisis del Whitepaper DB4O
Análisis del Whitepaper DB4O
 
Práctica de instalación y uso de Alfresco
Práctica de instalación y uso de AlfrescoPráctica de instalación y uso de Alfresco
Práctica de instalación y uso de Alfresco
 
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
Práctica de Bases de Datos con MySQL (diseño, desarrollo y uso)
 
Más alla de la web 2.0
Más alla de la web 2.0Más alla de la web 2.0
Más alla de la web 2.0
 
Práctica de herramientas web 2.0
Práctica de herramientas web 2.0Práctica de herramientas web 2.0
Práctica de herramientas web 2.0
 
Práctica en Joomla de reproductor de streaming de video y audio
Práctica en Joomla de reproductor de streaming de video y audioPráctica en Joomla de reproductor de streaming de video y audio
Práctica en Joomla de reproductor de streaming de video y audio
 
Informe de lectura de: Resumen del PMBOK v4 Dirección y Gestión de Proyectos
Informe de lectura de: Resumen del PMBOK v4 Dirección y Gestión de ProyectosInforme de lectura de: Resumen del PMBOK v4 Dirección y Gestión de Proyectos
Informe de lectura de: Resumen del PMBOK v4 Dirección y Gestión de Proyectos
 

Último

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 

Último (7)

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 

Metodologías para desarrollar aplicaciones web seguras

  • 1. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Seguridad en la Web 03 de mayo de 2015 Página 1 de 4 Metodologías de Desarrollo de Aplicaciones Web Seguras Introducción Bien es sabido que ningún sistema del tipo que sea, basado en hardware o software, es totalmente seguro, ya sea en mayor o menor medida pero todos resultan inseguros. Por ello se la famosa frase del prestigioso profesor de ciencias computacionales Gene Spafford quién dice que “El único sistema seguro es aquel que está apagado y desconectado, ente- rrado en un refugio de cemento, rodeado por gas venenoso y custodiado por guardianes bien pagados y muy bien armados. Aun así, yo no apostaría mi vida por él”. Es por ello que desde hace ya varios años los desarrolladores han comenzado a prestar atención en este aspecto y tratar de revisar aspectos de seguridad en sus aplicaciones, sin embargo la técnica tradicional que comúnmente se ocupa es la de desarrollar y una vez concluida la aplicación realizar pruebas de seguridad, sin embargo han comenzado a darse cuenta que esto resulta problemático, difícil de llevar a cabo y sobre todo más caro, pues las correcciones implican la reingeniería de la aplicación, y ello sin considerar que estos pro- blemas son exponenciales al tamaño y robustez de la aplicación. Con el paso del tiempo los desarrolladores han ido percibiendo estos problemas y han intentado nuevas formas, al grado de establecer muy completas propuestas de procesos a llevar a cabo para construir aplicaciones seguras, incluso al punto de crear metodologías que han sido ampliamente usadas. Las metodologías de desarrollo para software seguro suelen ser un complemento de las metodologías de desarrollo tradicionales, ya que se en- focan estrictamente en la seguridad, y aunque la mayoría de estás metodologías son de propósito general para cualquier tipo de sistema, lenguaje, plataforma o tecnología; tam- bién se han llegado a crear metodologías para usos específicos, como el caso de OWASP que se enfoca al entorno web. Así pues, por esta creciente preocupación por desarrollar aplicaciones web más seguras es que en este documento se recopilan y describe de forma breve las que se podrían considerar como las dos metodologías más influyentes. 1. Security Quality Requirements Engineering (SQUARE) SQUARE es una metodología creada en 2005 por el equipo CERT del Software Engineering Institute (SEI) que se centra en la obtención y análisis de requerimientos, por lo que es per- fectamente aplicable a la fase inicial del proceso de desarrollo de un software bajo meto- dología tradicional, o a lo largo de todo el desarrollo en el caso de metodologías ágiles. Así que SQUARE resulta ideal pues la mayor parte de problemas de un software se encuentran en la fase de requisitos por lo que en aspectos de seguridad, resultará bastante apropiada su implementación.
  • 2. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Seguridad en la Web 03 de mayo de 2015 Página 2 de 4 La razón por la que muchos proyectos de software fracasan o no alcanzan sus objetivos iniciales es porque la fase de desarrollo que involucra la determinación, análisis y especifi- cación fue llevada a cabo de forma escaza debido a su dificultad. Si a estos requisitos se le suman los requisitos de seguridad, entonces el proceso se vuelve en una tarea aún más difícil pero que bien vale la pena para lograr un software correcto, y en este caso, seguro, pues precisamente SQUARE lo que plantea es establecer la seguridad desde las etapas tem- pranas del ciclo de vida del desarrollo. La metodología está basada en nueve pasos, los cuales se describen e el informe, se indica su finalidad, las responsabilidades de los participantes, las técnicas que se pueden emplear y resultados a obtener (Software Engineering Institute, 2005). 1. Establecer un vocabulario común. 2. Identificación de objetivos de seguridad. 3. Desarrollo de artefactos (escenarios, diseños, casos de mal uso, etc.) 4. Evaluación de riesgos 5. Elección de técnicas para obtener requisitos 6. Obtención de requisitos de seguridad 7. Clasificación de requisitos 8. Priorización de requisitos 9. Revisión de los requisitos Se han creado diferentes informes sobre SQUARE, el primero describe la metodología, el segundo muestra un ejemplo de la aplicación de la metodología a un sistema administra- tivo y el cual puede servir de referencia para su implementación, y finalmente un tercer informe presenta un caso de estudio donde se presentan los resultados después de haber llevado a cabo la metodología con 3 clientes a lo largo de seis meses. SQUARE ha sido exi- tosamente extendido que de hecho se ha incorporado en modelos del Ciclo de vida tradi- cional, se le han creado métricas, evaluaciones de costos de adquisición, e incluso hecho comparaciones con otras metodologías1. 2. Correctness by Construction (CbyC) Por su parte CbyC es una metodología que desarrolló Praxis High Integrity Systems en 2001, pero que está más orientada a la industria aeroespacial y sistemas críticos de seguridad, por lo que bien puede ser implementada en cualquier otro contexto ya que combina los méto- dos formales con el desarrollo ágil muy usado hoy en día. Con CbyC se busca desarrollar desde un inicio sistemas de calidad y con requerimientos muy estrictos en seguridad lle- gando a niveles extremadamente bajos de errores, ello gracias a que se basa en tres princi- pios básicos (Build Security In, 2006): 1 Se puede consultar una amplia lista de informes con solo buscar “Security Quality Requirements Engineering“ en el sitio http://sei.cmu.edu/
  • 3. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Seguridad en la Web 03 de mayo de 2015 Página 3 de 4 1. Hacer que sea muy difícil introducir errores 2. Asegúrese de que los errores se eliminan lo más cerca posible del punto de intro- ducción, ya que se harán a pesar principio 1 3. Generar pruebas de aptitud para el uso en todo el desarrollo como un subproducto natural del proceso (debido a que muestra que el sistema desarrollado es seguro o seguro es a menudo más difícil de lo que es así). En CbyC se logra la detección temprana de errores y alta seguridad gracias a las técni- cas que plantea y que a su vez también son los componentes básicos del proceso, estos procesos o actividades de la metodología son: 1. Planificación de procesos 2. Capacitación del personal y de competencias 3. Trazabilidad de requisitos desde la especificación de casos de código y prueba 4. Gestión de fallos 5. Gestión del cambio 6. Gestión de la configuración 7. Recolección de métricas Por otro lado las técnicas empleadas durante los procesos son:  Hacer anotaciones de sonido para disminuir ambigüedades en la especificación de requisitos.  Estricta validación de entregables en cada etapa de desarrollo.  Desarrollo incremental, de forma que se escriba algo de código y se verifique.  Evitar la repetición, pues si un requisito fue ambiguo entonces se repetirá el error.  Hacerlo simple, pues de ello dependerá que las revisiones y desarrollo sean fáciles.  Gestionar los riesgos para responder mejor ante incidencias.  Pensar fuerte, para lograr los objetivos. Así pues, CbyC es una excelente metodología pero no recomendada para todos los ca- sos, sino para entornos que requieran demasiada seguridad, pues resulta demasiado es- tricta y es necesario ceñirse específicamente a los procesos establecidos tanto en CbyC como en la metodología de ingeniería de software usada, por lo que si el proceso de inge- niería no se lleva a cabo correctamente, entonces no resulta viable usar CbyC. 3. Otras metodologías existentes El análisis de resultados de Vega Zepeda (2011) recoge una lista de un par de metodologías y varios procesos y mejoras de metodologías empleados para construir software seguro. Entre ellos se pueden destacar el proceso de desarrollo propuesto por Apvrille y Pourzandi que emplea el proceso de desarrollo iterativo adaptado con seguridad; el método Clean- room que pretende lograr cero errores, es decir, más estricto que CbyC; también esta RUPsec que es una extensión del Proceso de Desarrollo Unificado (RUP); CLASP es un mé- todo que indica y documenta las actividades para hacer un software seguro.
  • 4. Por: Héctor Garduño Real Máster en Dirección e Ingeniería de Sitios Web Seguridad en la Web 03 de mayo de 2015 Página 4 de 4 Referencias Bibliográficas Build Security In. (05 de Mayo de 2006). Build Security In. Recuperado el 02 de Mayo de 2015, de Correctness by Construction: https://buildsecurityin.us- cert.gov/articles/knowledge/sdlc-process/correctness-by-construction navegapolis.net. (17 de Enero de 2006). Recuperado el 02 de Mayo de 2015, de SQUARE: metodología para requisitos de seguridad: http://www.navegapolis.net/content/view/238/52/ Software Engineering Institute. (Noviembre de 2005). Software Engineering Institute. Recuperado el 02 de Mayo de 2015, de Security Quality Requirements Engineering: http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=7657 Vega Zepeda, V. (Noviembre de 2011). Academia.edu. Obtenido de Ingeniería de Requerimientos para Productos Seguros. Resultados de un Análisis Bibliográfico: https://www.academia.edu/6997116/Ingenier%C3%ADa_de_Requerimientos_par a_Productos_Seguros._Resultados_de_un_An%C3%A1lisis_Bibliogr%C3%A1fico