Tabla de Contenidos

Introducción a seguridad de las aplicaciones

Nos enfocamos en saber sobre vulnerabilidades en software, centralizado en el mundo de las aplicaciones.

Autenticación, autorización y control de acceso

Autenticación

Tipos de criptografía

Autorización

Una vez autenticado el usuario entra en juego la política de autorización, que define que puede y que no puede hacer el usuario. Dependiendo del usuario se tendrá acceso a unos elementos u otros.

Control de acceso

Se hace cargo de controlar a que pueden acceder los usuarios.

Aplicaciones y servicios web con estado (stateful)

Son las aplicaciones más tradicionales, el servidor mantiene info de cada uno de los usuarios que se han conectado. Se crea una sesión para cada usuario la primera vez que se conecta, almacenando la información que se considere apropiada. Una sesión es una estructura de mapa en la que se almacenan atributos identificados por nombre, generalmente se almacena información de usuario, sus permisos, etc…

Se usa el API de servlets de java para las sesiones, que nos devuelve la sesión actual (HttpSession) usando una petición de cliente: HttpServetRequest.

Para identificar a que cliente pertenece cada petición se utilizan las cookies, que suelen ir en la cabecera de una petición http. Estas cookies se almacenan en el navegador. Para identificar la sesión del usuario se usele usar la cookie JSESSIONID o ASP.NET_SessionId.

Las cookies son un método tradicional de almacenamiento de información del cliente y se usa principalmente para:

Un servidor envía las cookies al cliente con la cabecera HTTP: Set-Cookie El cliente envía las cookies al servidor en la cabecera HTTP: Cookie

Set-Cookie: <cookie-name> =<cookie-value>

Las cookies pueden tener varios atributos:

Set-cookie: User=admin;  secure; HttpOnly

Las cookies de terceros son las cookies que instala un sitio web diferente del que se está visitando, por ejemplo, las de publicidad.

Cuando el navegador no soporta cookies, una alternativa que permite manejar la sesión es la técnica de reescritura de URL (URL rewriting). En la actualidad esta funcionalidad se considera una vulnerabilidad. Mediante esta técnica el servidor modifica la URL solicitada por el cliente añadiéndole al final el identificador de sesión.

patata.es/docs/web/index.html
patata.es/docs/web/index.html;jsessionid=3642AKJDN

La desventaja de los servicios web statefull es que se incrementa el uso de memoria usada por el servidor y presenta dificultades a la hora de escalar servicios. Sticky Sessions es una técnica de replicación de aplicaciones con estado en la que el balanceador de carga es capaz de asignar siempre el mismo servidor al mismo cliente.

Aplicaciones y servicios web sin estado (stateless)

En este tipo de aplicaciones el servidor no almacena información sobre el estado del cliente. La información usada para identificar al usuario se envía en primer término por el servidor una vez se ha realizado el proceso de autenticación. Se suelen usar Tokens JWT que permiten implementar de forma eficiente y segura las comunicaciones del servidor.

Aplicaciones Web tradicionales y SPA

app:aptrad.png