Resumen Tema 09 - Diseño y Desarrollo de Aplicaciones
Resumen Tema 09 - Diseño y Desarrollo de Aplicaciones
Resumen Tema 09 - Diseño y Desarrollo de Aplicaciones
Contenido
Interfaz Web
• Los navegadores web se han convertido en la interfaz de usuario estándar de facto para
bases de datos
– Permiten a gran número de usuarios acceder a bases de datos desde cualquier lugar
– Evitan la necesidad de descargar/instalar código especializado, a la vez que proporciona
una buena interfaz gráfica de usuario
• JavaScript (lenguaje de script) se ejecutan en el navegador, pero se descargar de forma
transparente
Ejemplos: acceso a cuentas bancarias, reservas de aviones, compras, matricula en
universidad, etc.
5
WWW - URL
• URL: Uniform Resource Locator: nombre globalmente único para cada documento al que se
puede tener acceso en web
– Ejemplo: http://www.acm.org/sigmod
• Primera parte: indica el modo o protoco de acceso al documento
– http: documento HTML
• Segunda parte: dirección de la máquina
• Resto: identificador local con camino al recurso o documento dentro de la máquina
• El identificador local puede ser:
– El camino y nombre de un fichero dentro de la máquina
– Un identificador de un programa más argumentos a pasar al dicho programa:
• Ejemplo: http://www.google.com/search?q=silberschatz
7
HTML y HTTP
• HTML proporciona características para
– Formateo de la información
– Enlaces hipertexto
– Hojas de estilo (separar el contenido del formato)
• HTML también tiene características para entrada de información
– Selección desde un conjunto de opciones
• Menús desplegables, listas de verificación, casillas seleccionables
– Introducción de información
• Cuadros de texto
– Enviar la información al servidor para ser tratada por alguna aplicación
• El protocolo HTTP es el usado por la comunicación con el servidor Web
8
• Método post: manda el valor de los parámetros como parte del intercambio del protocolo
HTTP entre el servidor web y el navegador.
10
Servidores web
• Los servidores web son programas que se ejecutan en la máquina servidora, que aceptan las
solicitudes de los navegadores web y devuelven los resultados en forma de documentos
HTML
• El nombre de documento en un URL puede identificar una aplicación que, al ejecutarse,
genera un documento HTML
– Cuando un servidor Web recibe una solicitud de dicho documento, ejecuta el programa y
devuelve el documento HTML generado por dicho programa
– El cliente web puede pasar argumentos extra junto con el nombre del documento o
aplicación/servicio del servidor
• Para instalar un nuevo servicio web, hay que crear e instalar en el servidor el ejecutable que
proporciona ese servicio
11
Servidores web
• La mayor parte de los servicios web de hoy en día usan una arquitectura web de dos capas,
en la que los programas de las aplicaciones se ejecutan en el servidor web
12
HTTP y sesiones
• El protocolo HTTP es sin conexión
– No existe ninguna conexión continua entre los clientes y los servidores web; cuando un servidor
web recibe una solicitud, se crea temporalmente una conexión para enviar la solicitud y recibir la
respuesta del servidor web
– Una vez que el servidor responde a una petición, el servidor cierra la conexión con el cliente
• A diferencia de JDBC/ODBC que permanecen conectadas hasta que el cliente desconecta
– Conservan la autenticación del usuario y otra información
– Justificación: reduce la carga en el servidor
• Los sistemas operativos tienen límites estrictos sobre el número de conexiones abiertas en una
máquina
• Las aplicaciones web necesitan información de sesión para permitir una interacción significativa con
el usuario:
– Solución: usar una cookie
13
HTTP y sesiones
• Una cookie no es más que un pequeño fragmento de texto, con un nombre asociado,
que contiene información de identificación
– Enviada por el servidor al navegador
• En la primera interacción para identificar la sesión
– Enviada por el navegador al servidor que la creó en siguientes interacciones
• Parte del protocolo HTTP
• Identifican al usuario en visitas posteriores
– El servidor guarda información sobre las cookies que ha emitido
• Identificador de sesión
• Invalidar (eliminar) la sesión tras un periodo de inactividad o cuando el usuario
la cierre
• Las cookies pueden grabarse permanentemente o por tiempo limitado
14
Servlets
• En la arquitectura web de dos capas, las aplicaciones se ejecutan como parte del
propio servidor web.
• Un modo de implementar esta arquitectura es cargar los programas Java en el servidor
web.
• La especificación servlet de Java define una API (Application Programming Interface)
para la comunicación entre el servidor web y las aplicaciones ejecutándose en el
servidor
• El código del servlet se carga en el servidor web cuando se inicia el servidor, o cuando
el servidor recibe una solicitud HTTP remota para ejecutar un servlet concreto.
– La tarea del servlet es procesar esa solicitud
• Por ejemplo:
– Acceder a una base de datos
– Generar dinámicamente una página HTML
15
Servlets
servlet PersonQueryServlet
Página web
Formulario:
Action=
“PersonQuery”
Se debe indicar al servidor web que el
servlet PersonQueryServlet se va a
utilizar para tratar las solicitudes de
PersonQuery
16
Servlets y sesiones
• La API servlet admite el manejo de sesiones
– Establece una cookie en la primera interacción con el navegador y la utiliza para
identificar sesiones en otras interacciones
• Para comprobar si una sesión está activa todavía:
– if(request.getSession(false) == true)
then (manejar conexión existente)
else (redirigir a la página de autenticación)
– Página de autenticación
• Comprobar login/password
• Crear una nueva sesión: request.getSession(true)
• Almacenar / recuperar pares de valores de atributos para una sesión en particular
– session.setAttribute(“userid”, userid)
– session.getAttribute(“userid”)
17
PHP
• PHP es un lenguaje de script en el lado del servidor muy utilizado.
– El código en PHP se puede mezclar con el código en HTML
– Los caracteres <?php indican el comienzo de código en PHP
– Los caracteres ?> indican el fin del código en PHP
• Un servidor web configurado apropiadamente interpreta cualquier archivo cuyo nombre termine en
.php como un archivo PHP.
– Sí se solícita este archivo, el servidor web lo procesa y devuelve el código HTML generado al
navegador.
• Existen distintas bibliotecas disponibles para el lenguaje PHP, incluyendo bibliotecas para el acceso a
bases de datos usando ODBC
20
JavaScript
• Lenguaje de script más usado
– La generación actual de interfaces web usa el lenguaje JavaScript intensivamente para construir
interfaces de usuario sofisticadas
• Con código JavaScript se puede:
– Validar datos introducidos por el usuario
– Modificar dinámicamente el código HTML que se muestra
• Acceso al (DOM: Document Object Model) que representa en forma de árbol el documento
HTML
– Comunicarse con un servidor Web para buscar datos y modificar la página actual utilizando
datos obtenidos, sin necesidad de volver a cargar / actualizar la página
• Forma parte de las tecnologías AJAX (Asynchronous JavaScript And XML)
– Los programas escritos en JavaScript se comunican con el servidor web de forma
asíncrona, es decir, en segundo plano, sin bloquear la interacción del usuario con el
navegador web, y pueden obtener información y mostrarla
– Ejemplo: se hace selección de país en menú, se genera la lista de estados/provincias
automáticamente en otro menú
23
JavaScript
• Ejemplo: Código JavaScript usado para validar un formulario de entrada de datos.
24
Fuga de contraseñas
• Nunca almacenar contraseñas, como contraseñas de bases de datos, en texto claro dentro
de scripts accesibles a los usuarios
– Por ejemplo, en ficheros directamente accesibles desde el servidor web
• Normalmente los servidores ejecutan, pero no suministran el código de los ficheros de
script .js o .php, pero hay formas sencillas de conseguirlos
• Restringir el acceso las bases de datos del servidor a IPs de máquinas ejecutando servidores
de aplicaciones
– Las bases de datos permiten configurar qué IPs tienen permitido el acceso
29
Trazas de auditoría
• Una traza de auditoría es un registro histórico de todas las modificaciones
(inserciones/borrados/actualizaciones) de la base de datos junto con información sobre el
usuario que realizó el cambio y el momento en que se produjo.
• Se utiliza para trazar actualizaciones erróneas/fraudulentas
• Se pueden implementar utilizando disparadores, pero la mayoría de las bases de datos
disponen de mecanismos directos
33
Técnicas de encriptación
• La Advanced Encryption Standard (AES, Norma de
cifrado avanzado) es un algoritmo de cifrado de
clave simétrica que fue adoptado como norma de
cifrado por el Gobierno de los EE.UU. en el año 2000,
y ahora se usa extensamente.
• El cifrado de clave pública se basa en cada uno de
los usuarios que tienen dos claves:
– clave pública – la clave conocida públicamente se
utiliza para cifrar datos, pero no se puede utilizar
para descifar
– clave privada – clave conocida sólo por el usuario
individual, y utilizada para descifrar datos. No
necesita transmitirse al sitio que hace el cifrado.
– El esquema de cifrado se hace de tal forma que es
imposible, o extremadamente difícil, descifrar
datos dada sólo la clave pública.
35
Técnicas de encriptación
• Pese a que el cifrado de clave pública que usa el esquema descrito es seguro, también es
costoso en cuanto a cálculo.
• Un esquema híbrido usado para proteger las comunicaciones combina la encriptación con
clave pública y privada para la encriptación eficiente de grandes cantidades de datos
– Se genera de forma aleatoria una clave de cifrado simétrica y se intercambia de forma
segura usando un esquema de cifrado de clave pública, entonces se usa el cifrado de
clave simétrica usando dicha clave para los datos que se transmitan después
36
Certificados digitales
• Los certificados digitales se usan para verificar la autenticidad de las claves públicas
• Problema: cuando se comunica con un sitio web, ¿cómo se sabe si se está comunicando un un sitio
web genuino o con un impostor?
– Solución: utilizar la clave pública del sitio web
– Problema: cómo verificar que la propia clave pública es la genuina
• Solución:
– Cada cliente (ej. navegador) tiene claves públicas de unas pocas autoridades de certificación de
nivel raíz
– Un sitio puede obtener su nombre/URL y la clave pública firmada por una autoridad de
certificación: el documento firmado se llama un certificado
– El cliente puede utilizar la clave pública de la autoridad de certificación para verificar el certificado
– Pueden existir varios niveles de autoridades de certificación. Cada autoridad de certificación
• Presenta su propio certificado de clave pública firmado por una autoridad de certificación de
mayor nivel, y
• Utiliza su clave privada para firmar el certificado a otras autoridades/sitios web.
38
Firma digital
• Otra aplicación interesante del cifrado de clave pública está en la firma digital para
comprobar la autenticidad de los datos
– La firma digital desempeña el rol electrónico de las firmas físicas en los documentos.
• La clave privada se usa para “firmar” es decir, cifrar los datos, y los datos firmados se
pueden hacer públicos.
• Cualquiera puede comprobar la firma descifrando los datos con la clave pública, pero
nadie puede haber generado los datos firmados sin tener la clave privada.
– Se invierten los roles de las claves pública y privada en este esquema. Por tanto, se
pueden autenticar los datos; es decir, se puede comprobar que fueron creados realmente
por la persona que afirma haberlos creado.