Control de Estado en Aplicaciones Web: Sesiones

Objetivo

Garantizar la conservación de los datos de un cliente que está realizando una operación en la Web.

Sesiones

  • Sesión: Mecanismo que guarda información específica de un usuario que está usando una aplicación web.
  • Un usuario = una sesión.
  • La sesión está vigente durante las páginas web que navega el usuario.
  • Cada sesión se identifica con un SID.
  • Modalidades:
    • Paso de datos a través de URL: Métodos POST o GET.
    • Cookies.

En el caso de las sesiones normales, el SID es enviado al cliente mientras que en el servidor se guarda toda la información de sesión.

PHP cuenta con un catálogo de funciones para el manejo de sesiones y de variables de sesión. $_COOKIE: Vector con los datos de todas las cookies vigentes dentro de un script PHP.

Limitaciones de las Cookies

  • No debe superar los 4kb.
  • Tener cuidado con datos encriptados.
  • Usar un juego de caracteres estándar. Por ejemplo: ANSI’94.
  • Advertir que la página web usa cookies, para evitar el bloqueo por parte del navegador.

Lista de Control de Acceso (ACL)

  • ACL: Access Control List.
  • Busca separar los privilegios de los usuarios.
  • Se basa en la creación de (grupos de) usuarios y de roles.

Implementación de un ACL

Dos pasos importantes:

  1. Creación del ACL: Se puede realizar con el apoyo de una base de datos. Se configuran los datos de los usuarios, permisos y roles.
  2. Utilización en la página web: Acceso a los privilegios configurados en el ACL a través de funciones web de acuerdo al lenguaje de servidor utilizado.

ACL soportado por una base de datos

  • Una tabla por cada dato relevante: Usuario, Roles, Permisos.
  • Tablas que unen dichos datos a través de sus PK.

Conexión entre el ACL y las páginas web

  • En el caso del que el ACL esté soportado por una BD, se realizarán los mismos pasos de conexión explicados para la conexión entre una página web y una BD (capítulo 6).
  • Una vez realizada la conexión, la página web debe soportar servicios de:
    • Lectura, creación y modificación de usuarios (usando tabla Usuarios).
    • Lectura, creación y modificación de permisos (usando tabla Permisos).
    • Lectura, creación y modificación de roles (usando tabla Roles).
    • Lectura, asignación y modificación de permisos a los roles (usando tabla Permisos_Roles).
    • Lectura, asignación y modificación de roles a usuarios o grupos de usuarios (usando tabla Usuarios_Roles).
    • Estos servicios pueden ser soportados por una clase ACL que maneje todas estas funciones.

Autenticación de Usuarios: OpenID y OAuth

Avalancha de nombres de usuario y password: el usuario de hotmail, el de yahoo, el de gmail, el de facebook, el de twitter, el de tuenti, etc.

Los usuarios sufren de fatiga de contraseña.

Solución: Autenticación Universal.

  • Los datos de usuario de una aplicación web sirven para ingresar en otra aplicación web.
  • Propuestas:
    • OpenID.
    • OAuth.

Protocolo de Acceso Ligero al Servicio de Directorios: LDAP

Directorio: Guía que lista objeto e información sobre los mismos.

Servicio de directorio: Componentes hardware y software que trabajan para prestar un servicio de búsqueda de información acerca de recursos electrónicos tales como usuarios, impresoras, archivos, etc.

LDAP: Light weight Directory Access Protocol.

  • Protocolo a nivel de aplicación para acceso a un directorio ordenado en un entorno de red.
  • Es un sistema cliente/servidor.

En LDAP un directorio está regido por cuatro modelos:

  • Modelo de información: Estructura.
  • Modelo de nombrado: Nombres e identificación.
  • Modelo funcional: Operaciones posibles.
  • Modelo de seguridad: Protección de la información.

Modelo de información

  • Entrada: unidad básica de un directorio.
    • Conjunto de datos acerca de un objeto → Atributos.
    • UID: Identificador único que distingue cada entrada.
  • Las entradas se organizan jerárquicamente a través de un árbol (DIT).
  • Cada atributo tiene un nombre, un tipo y al menos un valor.
  • Atributos pueden ser requeridos u opcionales.
  • Esquema: Conjunto de atributos permitidos y requeridos. Definen:
    • Tipo de objetos que almacena un directorio.
    • Los atributos de los objetos.
    • El formato de los atributos.
    • Si son opcionales u obligatorios.

Modelo de nombrado

  • RDN (Relative Distinguished Name) → Par (atributo=valor). Ejemplo: uid=123.
  • Nombre distintivo (DNDistinguished name): Nombre único de cada entrada del directorio.
    • Formado por la unión de varios RDN.
    • Se cuenta desde el objeto nombrado hasta la cima del árbol LDAP.
  • DN base: nivel superior de un directorio LDAP.
    • o="nombre_organizacion", c=US. DN base en formato X.500.
    • o=nombre_organizacion.com. DN base derivado de la presencia en Internet de la empresa.
    • dc=nombre_organización, dc=com. DN base derivado de los componentes de dominio DNS de la empresa.

Modelo funcional

Operaciones para controlar el directorio.

  • Bind: Sirve para autentificarse y especificar una versión del protocolo LDAP.
  • Search: Busca y obtene entradas de directorio.
  • Compare: Prueba si una entrada nombrada contiene un valor de atributo dado.
  • Add: Agrega una nueva entrada al directorio.
  • Delete: Elimina una entrada del directorio.
  • Modify: Modifica una entrada del directorio.
  • Modify Distinguished Name (DN): Modifica o renombra una entrada.
  • Abandon: Aborta una petición previa.
  • Extended Operation: Es el comando para definir otras operaciones de manera genérica.
  • Unbind: Cierra la conexión.
  • StartTLS: (desde LDAPv3). Activa la extensión Transport Layer Security (TLS) para realizar conexiones seguras.