esl-ES 2
esl-ES 2
introducción
Índice
Esquema
Ideas clave
Test
A fondo
Mean stack
Estudiaremos las medidas que son necesarias para implementar la seguridad de las
aplicaciones web para que, una vez desplegadas online, se comporten de la forma
esperada tanto por los propietarios como por parte de los usuarios de la aplicación y
introducir las actividades de seguridad que se realizan antes y una vez desplegada
la aplicación online, como; por ejemplo: los distintos tipos de análisis de seguridad y
información (SGSI) que regule y gobierne los procesos y procedimientos que han
interna o externa.
diseño e implementación de la seguridad desde las primeras fases del ciclo de vida
de desarrollo de aplicaciones.
de sus fases, como pueden ser el análisis y gestión del riesgo de forma dinámica, la
Las aplicaciones web son por excelencia el principal tipo de aplicación online
accesibles desde Internet, las Intranets de organizaciones, mediante una PC, una
Tablet o un móvil, características que también posibilitan que sean accesibles por
posibles atacantes que quieren obtener algún beneficio económico, información, etc.
Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=4e7f4317-2882-
46f2-a383-adbf010b1f48
▸ Analizar las actividades que se desarrollan en cada fase del Ciclo de Vida de
este.
de este.
recursos de este.
▸ Trazabilidad. Proporcionar los controles que señalen que en todo momento se podrá
Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=6c1c2155-6150-
4195-bda5-adbf010de7a9
del ciclo de vida de 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
cualquier naturaleza.
▸ En primer lugar, hay que derivar los requisitos de seguridad en función del resultado
▸ En fase de despliegue o de pruebas, se ejecutan los casos de test para prueba del
Figura 1.
Figura 1. Modelo de SSDLC de MacGraw (Seven Touchpoints for Software Security). Fuente: McGraw,
2006.
▸ Revisión de código.
▸ Pruebas de penetración.
▸ Casos de abuso.
▸ Requisitos de seguridad.
▸ Operaciones de seguridad.
▸ Revisión externa.
prácticas en empresas que tienen gran cantidad de softwares. Por esa razón, la
Hay que resaltar que estas actividades hay que repetirlas a lo largo del ciclo de vida,
seguridad.
utilizando una URL y este nivel de indirección puede aprovecharse para implementar
las analizadas anteriormente: «.Net» o «J2EE» (Padilla and Pérez, 2010). Estas
Además, dividir la aplicación en niveles permite que esta se pueda distribuir entre
de tareas y responsabilidades.
Las capas de las que se compone una aplicación web en una arquitectura clásica
son:
un conjunto de tecnologías que incluyen Javascript asíncrono junto con XML, XSLT,
Este elemento arquitectónico adicional del lado del cliente es lo más característico de
será responsable del procesamiento tanto de la interfaz que el usuario ve, como de la
De esta forma, el usuario no queda esperando la respuesta del servidor, que tiene la
percepción de que no hay tiempos de recarga. Los toolkits AJAX han permitido a
los desarrolladores web construir aplicaciones web 2.0 de forma rápida y con,
usuarios como el que otorgan, por ejemplo: Google Maps, Google Docs, Flickr, etc.
JS al motor AJAX. El motor se encarga por sí solo de servir el código HTML, CSS y
JS, ante cualquier respuesta a una acción del usuario que no requiere un viaje de
memoria e incluso un poco de navegación. Si el motor necesita algo del servidor con
penalizar a priori la experiencia del usuario del navegador (Asadullah et al. 2020).
Uno de los patrones de diseño lógico de las aplicaciones web más comunes es el de
▸ PHP.
▸ Modelo.
▸ Vista.
▸ Controlador.
Modelo
El modelo es la capa de la aplicación que se ocupa de los datos que esta necesita y
de los accesos a dichos datos. En una aplicación J2EE los componentes de la lógica
información.
Vista
navegador.
Si se permite, hay que validar por qué constituyen una potencial fuente de ataque
(Scambray et al. 2010; Sullivan et al. 2012; Mueller, 2016). Lo más deseable para
Figura 6. Esquema del patrón MVC para J2EE. Fuente: página de Programación.net
Controlador
JSPs (Java Server Pages), que integran código HTML y código Java, los encargados
petición.
PKI de firma digital y cifrado de datos. Asimismo, hay que prestar atención al servicio
de logging (los mensajes que deben aparecer deben ser los que realmente aportan
información de la necesaria en cada caso, ya que podría ser útil a los atacantes para
entre capas.
El protocolo HTTP implementa una serie de métodos especificados en HTTP 1.1 rfc
2616, según la página web de datatracker (2020), que son los siguientes:
▸ HEAD: pide una respuesta idéntica a la que correspondería a una petición GET,
▸ GET: pide una representación del recurso especificado. Por seguridad no debería
ser usado por aplicaciones que causen efectos, ya que transmite información a
través de la URI agregando parámetros a la URL.
Ejemplo
GET /index.php?page=main&lang=es
▸ POST: envía los datos para que sean procesados por el recurso identificado (URL).
camino más eficiente para subir archivos a un servidor. Esto es porque en POST
utiliza un mensaje multiparte y es decodificado por el servidor. En contraste, el
método PUT te permite escribir un archivo en una conexión socket establecida con
el servidor. La desventaja del método PUT es que los servidores de hosting
compartido no lo tienen habilitado.
Ejemplo
▸ OPTIONS: devuelve los métodos HTTP que el servidor soporta para un URL
servidor web.
En una petición GET los parámetros que se incluyen en la cadena de la URL pueden
prevenir XSS deshabilitando GET en las aplicaciones. Para un atacante es más fácil
petición. Para que sea más seguro se debe de utilizar POST en lugar de GET.
Cross Site Request Forguery (CSRF). Para prevenirlo se puede incluir algún campo
Figura 13. Procedencia de peticiones. Protección CSRF. Fuente: Chess y West, 2007.
navegador del usuario permitiendo lanzar otros ataques como XSS, que puede verse
en la Figura 14.
mismo es sin estado. Como HTTP es sin estado construir casi cualquier tipo de
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, que
la memoria del navegador con un espacio de 4096 bytes. La razón más común de
para continuar con una serie de interacciones con la aplicación. Se puede utilizar una
Esto quiere decir que la seguridad de la aplicación depende de ello y debe ser muy
Wesley
Mayekar, B. (2018). Explain in detail AJAX Web Application Model with neat diagram.
Q u e s 1 0 . https://www.ques10.com/p/29472/explain-in-detail-ajax-web-application-
model-wit-1/
http://www.swsec.com/resources/touchpoints/
Mueller, J. P. (2016). Security for web developers: using javascript, HTML and CSS.
O’Reilly Media.
Programación.net. https://programacion.net/articulo/manual_basico_de_struts_156
McGraw Hill.
iDESWEB UA. (2014). Ejecución de una aplicación web: modelo moderno (AJAX)
Página de MDPI.
Hoy en día los modelos ágiles están en auge. Se definen por la forma en que logran
software que dé prioridad a los aspectos de seguridad en cualquier fase del ciclo de
Mean stack
AngularJS y Node.js
distintos que son el modelo, la vista y el controlador. Es decir, por un lado, define
mantenimiento.
disponibilidad e integridad.
D. A y B son correctas.
A. SDL.
B. CLASP.
C. TOUCHPOINTS.
3. ¿En qué fase se le debe realizar un test de penetración a una aplicación web?
A. Diseño.
B. Desarrollo.
C. Pruebas.
D. Producción.
D. La A y la B.
5. Antes del test de penetración, ¿qué actividades de seguridad hay que llevar a
cabo?
B. Modelado de amenazas.
A. SSDLC.
B. SGSI.
C. SQLI.
D. OWASP.
A. PUT.
B. GET.
C. POST.
D. CONNECT.
8. ¿Qué método HTTP permite obtener solo las cabeceras de la aplicación web?
A. PUT
B. HEAD
C. POST
D. GET
A. GET.
B. POST
C. PUT
A. La B y la D son correctas.