Вы находитесь на странице: 1из 24

Arquitectura de las aplicaciones web

[1.1] ¿Cómo estudiar este tema?

[1.2] Introducción. Problemas de seguridad de las aplicaciones

[1.3] Arquitecturas y tecnologías de desarrollo de las aplicaciones web

[1.4] Arquitecturas y tecnologías de desarrollo de los servicios web

[1.5] Problemas de seguridad en las aplicaciones web

[1.6] Seguridad en el cliente, navegadores web, concepto de sandbox

[1.7] Seguridad en los servidores de aplicaciones

[1.8] Seguridad en la comunicación

[1.9] Seguridad física y del personal

[1.10] Seguridad en la aplicación. Actividades de


seguridad en el SSDLC

1 TEMA
Aplicaciones web y bases de datos:
Vulnerabilidades
Ataques
Esquema

Navegadores web

TEMA 1 – Esquema
Problemas inherentes a las
Arquitecturas de Servidores de aplicaciones
aplicaciones web Arquitecturas de
almacenes de Servidores de Bases de
El protocolo http aplicaciones web
datos datos
El concepto de SANBOX
Comunicación

n-CAPAS
XML
MVC

Servicios web LDAP

2
WEB 2.0 SGBDs

Actividades y buenas prácticas de


SEGURIDAD en ciclo de vida de desarrollo
seguro de aplicaciones. (SSDLC)

Seguridad en la fase de despliegue online


Seguridad en Aplicaciones en Línea

de las aplicaciones y bases de datos


Seguridad en Aplicaciones en Línea

Ideas clave

1.1. ¿Cómo estudiar este tema?

Para estudiar este tema, lee los apuntes elaborados por el profesor para este tema
«Arquitectura de las aplicaciones web ».

En este tema analizaremos, de forma introductoria desde el punto de vista de la


seguridad:

Las arquitecturas, patrones de diseño, tecnologías y lenguajes de desarrollo de las


aplicaciones web:
o Arquitecturas de varias capas.
o Patrones de diseño: MVC
o Tecnologías y lenguajes de desarrollo: J2EE, .NET
o WEB 2.0. Arquitectura de clientes enriquecidos: AJAX, FLASH, JSON

Actividades de seguridad en el Ciclo de Vida de Desarrollo seguro, SSDLC.

Actividades de seguridad en fase de producción online.

1.2. Introducción. Problemas de seguridad de las aplicaciones

Este punto es un resumen de los principales problemas de seguridad que tienen las
aplicaciones:

Problemas de diseño
Problemas de implementación
Problemas de operación

Estos problemas dan lugar diferentes tipos de ataques que implican, por un lado,
abordar el diseño seguro de una aplicación web con almacén de datos desde el
comienzo del Ciclo de Vida de Desarrollo Seguro de Aplicaciones (SSDLC), y
por otro lado, a afrontar la gestión de la seguridad una vez desplegada en la fase de
producción de la aplicación.

TEMA 1 – Ideas clave 3


Seguridad en Aplicaciones en Línea

Una aplicación ha de cumplir con los objetivos de seguridad para los sistemas de
información y comunicaciones TIC:

Identificar a las personas que acceden a la información manejada por un sistema o a


los recursos del mismo.
Autenticar a las personas que acceden a la información manejada por un sistema o a
los recursos del mismo.
Controlar el acceso a la información manejada por un sistema o a los recursos del
mismo.
Proporcionar confidencialidad a la información manejada por un sistema.
Proporcionar integridad a la información manejada por un sistema o a los recursos
del mismo.
Mantener la disponibilidad de la información manejada por un sistema o de los
recursos del mismo.
No repudio. Proporcionar la prueba de que una determinada transmisión o
recepción ha sido realizada, no pudiendo su receptor/transmisor negar que se haya
producido
Trazabilidad. Proporcionar los controles que determinen que en todo momento se
podrá determinar quién hizo qué y en qué momento.

Los principales problemas de seguridad que pueden impedir los objetivos


anteriormente citados que las aplicaciones pueden sufrir, tienen su origen en las
deficiencias y fallos que se produjeron en cada una de las fases del ciclo de vida de
desarrollo de software.

Existen, por tanto:

Vulnerabilidades de seguridad en el de diseño.


Vulnerabilidades de seguridad en el código.
Problemas funcionales de seguridad como autorización, control de accesos, etc.
Vulnerabilidades de seguridad debidos a fallos de configuración.
Problemas de seguridad debidos a la gestión de la seguridad una vez desplegada la
aplicación.

TEMA 1 – Ideas clave 4


Seguridad en Aplicaciones en Línea

Estas vulnerabilidades de distinta naturaleza pueden dar lugar a la materialización de


amenazas constituyendo ataques a la aplicación como:

Stealing Passwords
Social Engineering
Bugs and Back Doors
Authentication Failures
Protocol Failures
Information Leakage
Exponential Attacks Viruses and Worms
Denial-of-Service Attacks
Botnets
Active Attacks

En sentido general, un ataque contra un sistema es cualquier acto malévolo


previsto contra un sistema o un conjunto de sistemas. Hay dos conceptos muy
importantes en esta definición que merece la pena precisar. Primero, decimos
solamente que el acto está realizado con intención malévola, sin especificar ningunas
metas u objetivos. En segundo lugar, algunos ataques se dirigen en un sistema
particular, mientras que otros no tienen ningún objetivo en particular. Los ataques
pueden ser debidos a defectos, que pueden tener lugar en cualquiera de las fases del
ciclo de vida de construcción del software. A continuación, se presentan unos cuantos
ejemplos de ataques debidos a defectos de seguridad en el diseño, en la
implementación y en la operación.

Los pilares fundamentales para el diseño e implementación de la seguridad de las


aplicaciones y alcanzar los objetivos de seguridad son cuatro:

1. Sistema de Gestión de Seguridad de la Información


2. Política de seguridad
3. Ciclo de Vida de Desarrollo Seguro de Software
4. Monitorización continua

TEMA 1 – Ideas clave 5


Seguridad en Aplicaciones en Línea

1.3. Arquitecturas y tecnologías de desarrollo de las aplicaciones


web

Este punto aborda desde el punto de vista de la seguridad las características más
importantes de los tipos de arquitecturas más utilizadas en el diseño de las
aplicaciones. Se da un repaso a:

Las arquitecturas de aplicaciones web de 2 capas, 3 capas, 4 capas.


Patrón MVC
Servicios web
WEB 2.0.
Tecnologías de desarrollo como .NET, J2EE, PHP, AJAX, etc.

Las aplicaciones web, se utilizan para comprar, comunicarse, realizar transacciones


de bancos, logística y gestión de personal en una empresa. De acuerdo con el informe
Volumen 4 de Veracode, el 75% del software analizado durante un año y medio, hasta
abril de 2011, correspondió a aplicaciones web. Por lo tanto, el número de amenazas
que las aplicaciones web pueden sufrir es bastante alto y de acuerdo con IBM X-Force
2011 Trend Report y Riesgo alrededor del 41 % de todas las vulnerabilidades
descubiertas eran de aplicaciones web. Esto obliga a realizar un análisis de
seguridad de cualquier aplicación web para evitar las amenazas, tantas como sea
posible. El logro de este objetivo solo es posible mediante el uso de diversas técnicas y
herramientas para garantizar la seguridad en todas las fases del SSDLC.

En este apartado se va hacer un breve resumen de las tecnologías más comúnmente


empleadas en el desarrollo de aplicaciones web, estas incluyen diferentes lenguajes y
plataformas como son C/C++, J2EE, ColdFusion, PHP y .NET, que se encuentran
entre las más utilizadas hoy en día. A continuación, se representan estos ratios de
utilización de aplicaciones web y los lenguajes más empleados en su desarrollo.

TEMA 1 – Ideas clave 6


Seguridad en Aplicaciones en Línea

Fuente: Lenguajes empleados desarrollo web. Veracode report volumen 4.

Se estudian también las tecnologías de desarrollo de aplicaciones web como son J2EE y
.NET, desde un punto de vista de la seguridad. La elección entre J2EE y .NET, depende
mayormente de la plataforma elegida. Las aplicaciones que se orientan a J2EE
teóricamente pueden ser ejecutadas con pocos (o ningún) cambio entre los proveedores
más importantes. En muchas plataformas de Linux, AIX, MacOS X, o Windows, en la
práctica, son requeridos algunos ajustes, pero no es necesario reescribir completamente
la aplicación. .NET se encuentra disponible principalmente en plataformas Microsoft
Windows. El proyecto Mono puede correr aplicaciones .NET en diversas plataformas
incluyendo Solaris, Netware, Linux.

Se analizan las arquitecturas de las aplicaciones web, las capas de que se


compone una aplicación web son:

Capas de presentación-aplicación: Servidores web (Apache, IIS, etc.) Servidor


de aplicación (Weblogic, Tomcat, WebSphere, Struts, .NET, ColdFusion, etc.).
Capa de persistencia: Base de datos (Oracle, MS SQL Server, MySQL,
PostgreSQL, etc.)
Clientes Web: principal objetivo.

TEMA 1 – Ideas clave 7


Seguridad en Aplicaciones en Línea

VALIDACION ENTRADA – SALIDA AUDITORIA LOGGING


GESTION DE EXCEPCIONES CIFRADO DE DATOS
AUDITORIA LOGGING

SERVIDOR SERVIDOR
APLICACIONES BASE DE
DATOS

APLICACION

NAVEGADOR

SEGURIDAD USUARIO SEGURIDAD CONEXIÓN SEGURIDAD CONEXIÓN LOPD-LSSICE


GESTION DE SESIONES AUTENTICACION - AUTORIZACION

Arquitectura de 3 capas de aplicaciones web

Se revisa uno de los patrones de diseño de las aplicaciones web más comunes,
Modelo-Vista-Controlador (MVC), que implementa la arquitectura de aplicación
Smalltalk 80. MVC es típico de la mayoría de las aplicaciones J2EE de Apache
Foundation Jakarta Struts, y el código detrás de .NET puede ser considerado una
implementación parcial de este enfoque. Para PHP, el proyecto WACT aspira a
implementar el paradigma MVC de una manera más amigable para PHP. Existen
frameworks disponibles para J2EE, .NET, rubí, Phyton o PHP que permiten
implementar la arquitectura MVC.

Por último, se introducen tecnologías que tienen gran impacto y por tanto merece la
pena estudiar sus implicaciones de seguridad como:

WEB 2.0. de cliente enriquecido: AJAX, JSON, FLASH


Servicios web

Rich Internet Applications (RIA), han cobrado gran interés últimamente. Se basan en la
incorporación de código en el lado del cliente como en el caso de AJAX. Una aplicación
AJAX elimina la naturaleza start-stop-start-stop de la interacción entre el cliente y el
servidor de aplicaciones web introduciendo un intermediario, un motor AJAX entre el
usuario y el servidor. Parecería que sumar una capa a la aplicación la haría menos
reactiva, pero es todo lo contrario.

TEMA 1 – Ideas clave 8


Seguridad en Aplicaciones en Línea

En lugar de cargar una página web, en el inicio de la sesión, el navegador carga un


motor AJAX escrito en JavaScript y usualmente escondido en un frame oculto. Este
motor es responsable del procesamiento tanto de la interfaz que el usuario ve como de
la comunicación con el servidor en nombre del usuario.

1.4. Arquitecturas y tecnologías de desarrollo de los servicios


web

Los principios de diseño de las aplicaciones distribuidas basadas en servicios web


tienen su origen en lo que se denomina Arquitectura Orientada a Servicios (SOA,
Service-Oriented Architecture). Como ejemplos de esta arquitectura se pueden
nombrar tecnologías tan conocidas como RPC, RMI, CORBA o DCOM. En la tabla 1, se
proporciona una comparativa de los servicios y formatos de datos soportados por
distintas tecnologías SOA.

Comparativa Java RMI CORBA Web Services


Mecanismo de invocación Java RMI CORBA RMI JAX-RPC, .NET,
Formato de los datos Serialización Java CDR XML
Formato de comunicación Flujo de bits GIOP SOAP
Protocolo de transferencia JRMP IIOP HTTP. SMTP, JMS
Descripción de la Interfaz Interfaces Java CORBA IDL WSDL
Mecanismo de Registro Java Servicio de nombres
UDDI
descubrimiento RegistroRmi (COS naming)
Tabla 1. Comparativa tecnologías SOA.

En este apartado se revisa la arquitectura de Servicios Web desarrollados con protocolo


SOAP que es la que goza de mayor nivel de madurez en cuanto a especificaciones de
seguridad que permiten alcanzar los objetivos de seguridad de la forma más eficaz.

TEMA 1 – Ideas clave 9


Seguridad en Aplicaciones en Línea

1.5. Problemas de seguridad de las aplicaciones web

Este tema trata los problemas de seguridad de las aplicaciones web, incluyendo todos
los elementos y componentes de la arquitectura. Los problemas de seguridad de
este tipo de aplicaciones pasan por problemas que tienen:

Los navegadores web.


Los servidores web, servidores de aplicaciones.
Los servidores de Bases de Datos.
Defectos de seguridad intrínsecos a la aplicación web.
Problemas de seguridad en la comunicación.
Problemas de seguridad física y del personal.

Las aplicaciones web son difíciles por ciertas razones, si los usuarios tienen un
acceso fácil a la aplicación, entonces usuarios malévolos tienen acceso fácil también. No
hay ningún modo de saber de antemano que una petición a una aplicación será
benigna. Los problemas intrínsecos de las aplicaciones web están relacionados con:

Problemas relacionados con el protocolo HTTP de comunicación.


Problemas de validación de la entrada en el código del lado del servidor.
Problemas de validación de la salida en el código del lado del servidor que pueden
causar redirecciones a servidores controlados por el atacante y que estos aprovechan
para conseguir acceso a datos personales.
Problemas de validación de la entrada y de la salida en el código del lado de cliente
en aplicaciones web 2.0 de cliente enriquecido que utilizan motor AJAX por
ejemplo.

En este apartado se introducen los problemas de seguridad intrínsecos a las


aplicaciones web, excepción hecha de los problemas debidos a los servidores, sistemas
operativos, comunicación, etc.

El protocolo HTTP, no fue diseñado para aplicaciones y seguramente no para usos


seguros. HTTP crea oportunidades para tener problemas de seguridad de la misma
manera que en las funciones de string de la biblioteca estándar de C se crean
oportunidades para el desbordamiento de buffer: Los programadores tienen que tener
su modo de asegurarse de que lo que hacen es seguro.

TEMA 1 – Ideas clave 10


Seguridad en Aplicaciones en Línea

El problema de HTTP es más agudo cuando se maneja el estado de sesión, que es


necesario en la mayor parte de aplicaciones porque el protocolo en sí mismo es sin
estado. Como HTTP es sin estado, construir casi cualquier tipo de aplicación
sofisticada, requiere un identificador de sesión que sirva para ambos sentidos de la
comunicación para asociar las peticiones previas de un usuario con las siguientes. Los
identificadores de sesión pueden ser pasados hacia adelante y hacia atrás como
parámetros URL, pero hoy la mayor parte de las aplicaciones manejan cookies. La
razón más común de usar un identificador de sesión es permitir a un usuario
autenticarse solo una vez, para continuar con una serie de interacciones con la
aplicación. Esto quiere decir que la seguridad de la aplicación depende de ello siendo
muy difícil para un atacante aprovechar el identificador de sesión para un usuario
autenticado. Una buena gestión de sesión HTTP escoge identificadores de sesión
fuertes y se asegura de que son publicados y revocados en puntos apropiados en el
programa.

1.6. Seguridad en el cliente, navegadores web, concepto de


sandbox

La elección del navegador a utilizar ha de contemplarse en las fases de análisis de


requisitos de seguridad y de diseño de la arquitectura de la aplicación en paralelo con el
análisis de riesgos arquitectónicos del ciclo de vida de desarrollo seguro de
aplicaciones (SSDLC). Lógicamente ha de cumplir con los requisitos de seguridad
deseados acordes con la aplicación web con la que va a interactuar.

Los navegadores web median entre los usuarios y las aplicaciones web.

Aplicaciones maliciosas pueden cargarse y ejecutarse dentro del navegador haciéndolo


vulnerable.

TEMA 1 – Ideas clave 11


Seguridad en Aplicaciones en Línea

Las nuevas arquitecturas de aplicaciones demandan nuevos diseños de navegadores


acordes con WEB 2.0. La seguridad en los navegadores web hay que enfocarla desde
dos puntos de vista:

Las propias vulnerabilidades de seguridad que contiene el código con el que está
construido un determinado navegador.

La implementación de medidas de seguridad que el propio usuario puede


administrar y configurar dentro del navegador para proteger la ejecución del código
de la parte cliente de las aplicaciones con sus propias vulnerabilidades de
seguridad que hay que intentar mitigar.

1.7. Seguridad en los servidores de aplicaciones

La elección de los servidores que dan soporte a la aplicación web a desplegar ha de


contemplarse en las fases de análisis de requisitos de seguridad y de diseño de la
arquitectura de la aplicación en paralelo con el análisis de riesgos arquitectónico del
ciclo de vida de desarrollo seguro de aplicaciones (SSDLC). Lógicamente han de
cumplir con los requisitos de seguridad deseados acordes con la aplicación web que se
van a instalar en los servidores.

1.8. Seguridad en la comunicación

El diseño de la arquitectura de comunicaciones que da soporte a la aplicación web


a desplegar ha de contemplarse en las fases de análisis de requisitos de seguridad y de
diseño de la arquitectura de la aplicación en paralelo con el análisis de riesgos
arquitectónico del ciclo de vida de desarrollo seguro de aplicaciones (SSDLC).

Se ha de diseñar una arquitectura de red pensando en la seguridad desde el


principio dotando a la red de una zona desmilitarizada donde ubicar los servidores con
acceso directo al exterior y de una zona de gestión de red. En último extremo se debe
asegurar la comunicación entre las capas de que se compone la aplicación mediante
protocolos de comunicaciones seguros.

TEMA 1 – Ideas clave 12


Seguridad en Aplicaciones en Línea

1.9. Seguridad física y del personal

Además de diseñar, implementar, probar, comprobar o auditar la seguridad de los


sistemas de información, es necesario que las instalaciones donde se ubican sean las
adecuadas y para ello es necesario derivar los requisitos de seguridad de las
instalaciones de acuerdo con el tipo de sistema que van a albergar. Posteriormente se
deben modelar las características de las instalaciones de acuerdo con los requisitos de
seguridad en el análisis de riesgos del sistema para verificar que son las adecuadas.
Estas actividades son las dos primeras prácticas de seguridad que hay que realizar
dentro del esquema del ciclo de vida de desarrollo seguro de sistemas (SSDLC).

Por otro lado, es necesario que todo el personal que está relacionado con los
sistemas tenga la formación en concienciación de seguridad necesaria para
evitar fugas de información que puedan comprometer el sistema. De la forma más
inverosímil un sistema puede verse comprometido debido a descuidos en el personal y
los altos costes que implica implementar la seguridad en todos los aspectos,
comunicación, servidores, sistemas operativos, etc. no habrán servido de nada.

1.10. Seguridad en la aplicación. Actividades de seguridad en el


SSDLC

La seguridad de la aplicación tiene que tratarse obligatoriamente en todas las fases


del ciclo de vida desarrollo seguro (SSDLC) de aplicaciones. En cada una de las fases,
como veremos más adelante, se han de realizar prácticas que tienen que ver con el
diseño, la implementación y pruebas de la seguridad de la aplicación tratando y
cubriendo todos los aspectos y principios de la seguridad.

El ciclo de vida SSDLC, contempla también las operaciones y actividades de


seguridad online en fase de producción con la aplicación desplegada, la cual ya puede
entonces ser objetivo de ataques de cualquier naturaleza.

TEMA 1 – Ideas clave 13


Seguridad en Aplicaciones en Línea

En relación al SSDLC hay que llevar a cabo:

En primer lugar, hay que derivar los requisitos de seguridad y casos de abuso de la
aplicación.
Hay que diseñar la seguridad de la aplicación en base a los requisitos de seguridad y
casos de abuso de la fase 1 y de los principios de seguridad: autenticación,
autorización, control de accesos a recursos, cifrado de datos, seguridad en
profundidad para asegurar el no repudio, confidencialidad e integridad de datos, etc.
Se implementa el código de la aplicación siguiendo buenas prácticas de desarrollo
seguro como son la validación de las entradas y salidas de la aplicación, gestión de
errores, etc.
Se prueba la seguridad del código y funcional de seguridad de la aplicación con
técnicas de caja blanca y de caja negra. Estas pruebas pueden conducir a un ciclo
volviendo a la primera fase para definir nuevos requisitos o redefinir los existentes
para solucionar problemas encontrados.
Se despliega la aplicación y se prueba mediante test funcionales de seguridad y de
penetración.
En la fase de producción de la aplicación online, las prácticas de seguridad que se
llevan a cabo corresponden con las operaciones de seguridad del ciclo de vida de
desarrollo de aplicaciones mencionado anteriormente. Tienen que ver con continuar
asegurando una correcta configuración de todos los elementos y partes que
intervienen en la aplicación como son:
o Administración de las configuraciones de los parámetros que afectan a la
seguridad de toda la aplicación, contenidos en los archivos correspondientes al
servidor de aplicaciones, aplicación y base de datos.
o Gestión y administración de la autenticación, autorización y control de accesos.
o PKI para gestión de certificados digitales: Establecimiento de conexiones seguras.
o Política de gestión de contraseñas. Monitorización continua, auditoría y gestión
de logs: SIEM, IDS, IPS, Firewall de red, etc.
o Mecanismos de protección externos como firewall de aplicaciones web (WAF), de
bases de datos, firewalls XML o herramientas de protección de vulnerabilidades
en tiempo real (RASP) que ofrecen ya varias empresas como Fortify HP
(SecuirtyScope) o IBM (Appscan standard editon IAST).
o Gestión de backups y de desastres. Centro de respaldo.

TEMA 1 – Ideas clave 14


Seguridad en Aplicaciones en Línea

Material complementario

Lecciones magistrales

Aplicaciones AJAX (Rich Client Internet Applications)

Repaso de una de las tecnologías más actuales de implementación de aplicaciones de


cliente enriquecido, se revisa la arquitectura de este tipo de aplicaciones y los
problemas de seguridad que introducen.

El vídeo está disponible en el aula virtual.

No dejes de leer…

Building Scalable Web Sites

Henderson, C. (2006). Building Scalable Web Sites. (pp. 6-26). O'Reilly Media, Inc.

Es recomendable la lectura del capítulo 2 sobre características de las arquitecturas de


las Aplicaciones.

Accede al capítulo desde el aula virtual o a través de la siguiente dirección web:


http://books.google.es/books?id=wIWU94zKEtYC&printsec=frontcover&dq=Building
+Scalable+Web+Sites&hl=

Características de los servicios web

Guía breve de servicios web. Estos servicios proporcionan mecanismos de


comunicación entre diferentes aplicaciones, que interactúan entre sí para presentar
información dinámica al usuario. Para ello, es necesaria una arquitectura de referencia
estándar

Accede al artículo desde el aula virtual o a través de la siguiente dirección web:


http://www.w3c.es/Divulgacion/GuiasBreves/ServiciosWeb

TEMA 1 – Lo + recomendado 15
Seguridad en Aplicaciones en Línea

Seguridad en AJAX

Ajax Security Basics y Book excerpt: Jump into AJAX development. Se revisan aspectos
de seguridad de este tipo de aplicaciones y la se introduce la forma de solucionarlos.

Accede a los documentos desde el aula virtual o a través de las siguientes direcciones web:
http://www.symantec.com/connect/articles/ajax-security-basics
http://www.javaworld.com/javaworld/jw-08-2006/jw-0807-ajax.html

Seguridad en Navegadores Web

Deploying and Securing Google Chrome in a Windows Enterprise y Guide to Securing


Netscape 7.02, dos de los navegadores más extendidos

Accede a los documentos desde el aula virtual o a través de las siguientes direcciones web:
https://www.iad.gov/iad/library/ia-guidance/security-
configuration/applications/deploying-and-securing-google-chrome-in-a-windows-
enterprise.cfm
http://isp.netscape.com/

No dejes de ver…

OWASP Appsec Tutorial Series sobre


vulnerabilidades de seguridad - Episode 3:
Cross Site Scripting (XSS)

Tutorial sobre vulnerabilidad Cross Site Scripting


(XSS).

Accede al vídeo desde el aula virtual o a través de la siguiente dirección web:


https://www.owasp.org/index.php/OWASP_Appsec_Tutorial_Series

TEMA 1 – Lo + recomendado 16
Seguridad en Aplicaciones en Línea

A fondo

Arquitectura J2EE

En este artículo se describen cuáles son las características, de la tecnología de


desarrollo J2EE para abordar el desarrollo e implantación de grandes aplicaciones
escalables sobre redes globales dirigidas a entornos empresariales o industriales.

Accede al artículo desde el aula virtual o a través la siguiente dirección web:


http://www.dtic.ua.es/grupoM/recursos/articulos/JDARE-04-D.pdf

JSON

Introducción a JSON (JavaScript Object Notation - Notación de Objetos de JavaScript).


Es un formato ligero de intercambio de datos. Está basado en un subconjunto del
lenguaje programación javascript y se utiliza como forma de intercambio de datos en
aplicaciones AJAX.

Accede al artículo desde el aula virtual o a través la siguiente dirección web:


http://json.org/json-es.html

Ajax

Ajax frente al esquema tradicional de aplicaciones web. En este artículo se describe el


nuevo enfoque de la arquitectura AJAX frente a las arquitecturas web tradicionales
para conseguir clientes más enriquecidos.

Accede al artículo desde el aula virtual o a través la siguiente dirección web:


http://adaptivepath.org/ideas/ajax-new-approach-web-applications/

TEMA 1 – Material complementario 17


Seguridad en Aplicaciones en Línea

Arquitectura de Servicios Web

En este enlace es una ampliación sobre la Arquitectura de Servicios Web, describiendo


los protoclos y servicios que los componen: SOAP, UDDI, WSDL.

Accede al artículo desde el aula virtual o a través la siguiente dirección web:


http://msdn.microsoft.com/en-us/library/ms996507.aspx

Webgrafía

Open Web Application Security Project

Página web del proyecto abierto para Seguridad de las Aplicaciones Web. En su página
web se menciona su propósito:

“The Open Web Application Security Project (OWASP) is a worldwide not-for-profit


charitable organization focused on improving the security of software. Our mission is to
make software security visible, so that individuals and organizations worldwide can
make informed decisions about true software security risks”.

Accede a la página desde el aula virtual o a través la siguiente dirección web:


https://www.owasp.org/index.php/Main_Page

TEMA 1 – Material complementario 18


Seguridad en Aplicaciones en Línea

Bibliografía

Cannings, R., Dwivedi, H. y Lackey, Z. (2008) Hacking exposed web applications. Web
2.0. Mcgraw Hill.

Category: OWASP Top Ten Project. Recuperado de:


https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

Chess B. and West, J. (2007). Secure Programming with Static Analysis Addison-
Wesley Software Security Series.

Connolly, G. M.; Akin, M.; Goyal, A.; Howlett, R.; Perrins, M. (2008). Building
Dynamic Ajax Applications Using WebSphere Feature Pack for Web 2.0. IBM
Redbooks

Graff M. G. (2001). Secure Coding: The State of the Practice. Recuperado de


http://www.securecoding.org/authors/articles/may202003/

Gutiérrez, E. XML en 10 puntos. Traducido de la versión original, disponible en


http://www.w3.org/XML/1999/XML-in-10-points.html

IBM X-Force 2011 Trend Report. Recuperado de http://www-


935.ibm.com/services/us/iss/xforce/trendreports/

McGraw, G. (2006). Software Security: Building Security In. Publisher: Addison


Wesley Professional.

OWASP Development Guide Project. Recuperado de


https://www.owasp.org/index.php/Projects/OWASP_Development_Guide

Padilla, J. y Pérez, J. (2009). Comparativa J2EE/.NET EVOLUCIÓN II. Máster para la


Formación del Profesorado 2009-2010 Recuperado de http://joseperezlozano.com/wp-
content/uploads/2010/05/J2EEOPuntoNetVersionWeb.pdf

Scambray, J.; Liu, V. y Sima, C. (2010). Hacking Exposed Web Applications 3.


McGraw-Hill/Osborne.

TEMA 1 – Material complementario 19


Seguridad en Aplicaciones en Línea

Silic, M.; Krolo, J. and Delac, G. (2010). Security Vulnerabilities in Modern Web
Browser Architecture. Faculty of Electrical Engineering and Computing, University of
Zagreb. Croatia

Veracode report volumen 4. Recuperado de http://www.veracode.com/reports/index.html

TEMA 1 – Material complementario 20


Seguridad en Aplicaciones en Línea

Actividades

Trabajo: Seguridad en AJAX

Descripción de la actividad

Realización de un trabajo para recopilar los problemas de seguridad que presenta la


tecnología WEB 2.0 AJAX y las posibles soluciones a los mismos.

Pautas de elaboración

Esta actividad sobre seguridad en aplicaciones Ajax abarca los problemas de seguridad
que tienen este tipo de aplicaciones, que caen en la categoría denominada rich internet
applications y en las posibles soluciones a los mismos. Hay que consultar cuantas
fuentes relativas al tema se considere y sintetizar la información relevante sin limitarse
a copiar el contenido de alguna de ellas.

Criterios de valoración

Se valorará (para todas las actividades):

Contenidos. Para la realización de los trabajos se deben consultar varias fuentes


para después contrastarlas, sintetizarlas y generar un trabajo y opinión
personalizados aportando ejemplos gráficos.
Estructura del documento. Debe ser planificada previamente y tener un
apartado de conclusiones y de referencias al final.
Presentación acorde con la categoría del curso.
Referencias. Se deben especificar en un apartado al final todas las fuentes
consultadas, URL’s de internet, papers, artículos o libros especificando todos los
datos de la publicación disponibles. Recalcar la obligatoriedad de la especificación
de las referencias consultadas.

Extensión máxima: 10-15 páginas (fuente Georgia 11 e interlineado 1,5).

TEMA 1 – Actividades 21
Seguridad en Aplicaciones en Línea

Test

1. ¿Cuáles son los objetivos de seguridad de los Sistemas TIC?


A. No repudio, funcionamiento correcto, trazabilidad, confidencialidad,
disponibilidad, integridad.
B. No repudio, trazabilidad, autenticación, autorización y control de acceso,
confidencialidad, disponibilidad, integridad.
C. No repudio, autenticación, autorización y control de acceso, confidencialidad,
disponibilidad, integridad.
D. A y B son correctas.

2. ¿Cuáles son los tipos de vulnerabilidades que un sistema puede tener?


A. Calidad, diseño, operación.
B. Calidad, implementación, diseño.
C. Diseño, implementación, operación.
D. Ninguna de las anteriores.

3. Señala la afirmación correcta.


A. Con CGI, El ciclo escritura – compilación – implementación – ejecución es
más rápido que en la mayoría de las tecnologías más recientes (pero no
demasiado).
B. La mayoría de los lenguajes de script no se encuentran sólidamente tipificados
y no promueven buenas prácticas de programación.
C. Entre los marcos de lenguajes de script se incluyen .NET y J2EE.
D. Todas las anteriores son falsas.

4. Señala la afirmación correcta.


A. C#, Java, Python, Ruby o dialectos de C como CCured y Cyclone son
lenguajes que fuerzan la comprobación de tipos y de memoria de forma que su
gestión sea segura.
B. C y C++ son lenguajes seguros y ampliamente utilizados.
C. Con lenguajes de programación «seguros» el programador no ha de
preocuparse.
D. Todas las anteriores son falsas.

TEMA 1 – Test 22
Seguridad en Aplicaciones en Línea

5. Señala la afirmación falsa.


A. La seguridad de una aplicación debe aplicarse a todas las capas de la misma.
B. Las capas de una aplicación web son: cliente-presentación-aplicación-
persistencia (Base de datos).
C. El patrón de diseño MVC tiene tres capas: vista-controlador-modelo.
D. Todas las anteriores son falsas.

6. Señala la afirmación falsa.


A. AJAX, JSON son tecnología WEB 2.0.
B. La comunicación entre el motor AJAX y el servidor de aplicaciones es síncrona.
C. Los principios de diseño de las aplicaciones distribuidas basadas en servicios
web tienen su origen en lo que se denomina Arquitectura Orientada a
Servicios.
D. WDSL es un lenguaje de descubrimiento de servicios.

7. Una vulnerabilidad de condiciones de carrera TOCTOU es debida a una deficiencia


en:
A. Operación.
B. Diseño.
C. Implementación.
D. Planeamiento.

8. Una vulnerabilidad de SQL injection es debida a una deficiencia en:


A. Operación.
B. Diseño.
C. Implementación.
D. Planeamiento.

9. Señala la opción incorrecta en cuanto a los problemas de seguridad en las


Aplicaciones Web.
A. Tienen problemas relacionados con el protocolo HTTP de comunicación.
B. Tienen problemas de validación de la entrada en el código del lado del
servidor.
C. No es necesaria la validación de la salida en el código del lado del servidor.
D. El protocolo HTTP, no fue diseñado para aplicaciones y seguramente tampoco
para usos seguros.

TEMA 1 – Test 23
Seguridad en Aplicaciones en Línea

10. Respecto a las actividades y buenas prácticas de seguridad en el ciclo de vida de


desarrollo seguro de aplicaciones o sistemas, señala la opción incorrecta:
A. Las actividades de seguridad del SSDLC hay que repetirlas a lo largo del ciclo
de vida lo que supone un ciclo continuo.
B. Hay que realizar antes las pruebas de penetración que la revisión de código.
C. Hay que realizar una derivación de requisitos de seguridad y de casos de abuso.
D. Nuevos defectos de implementación de partes que se modifican con arreglo a
nuevas especificaciones o cambios en las mismas implica nueva revisión de
código y nuevas pruebas de seguridad en operación del sistema.

TEMA 1 – Test 24

Вам также может понравиться