Diseño y desarrollo de aplicaciones

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Diseño y desarrollo de aplicaciones por Mind Map: Diseño y desarrollo de aplicaciones

1. 8.4 Servlets y JSP

1.1. 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.

1.1.1. La clase HttpServlet de Java implementa la especificación servlet de la API; las clases servlet usadas para implementar funciones concretas se definen como subclases de esta clase.

1.1.2. La tarea del servlet es procesar esa solicitud, lo cual puede suponer acceder a una base de datos para recuperar la información necesaria, y generar dinámicamente una página HTML para devolvérsela al navegador del cliente.

1.2. 8.4.2 Sesiones de los servlets

1.2.1. La API del servlet ofrece un método para realizar el seguimiento de las sesiones y almacenar la información relacionada con ellas. La invocación del método getSession

1.2.1.1. Si el cliente no tiene ninguna cookie con ese nombre, o devuelve un valor que no corresponde al de ninguna sesión abierta, la solicitud no forma parte de ninguna sesión abierta

1.2.1.2. El código del servlet también puede almacenar y buscar pares en el objeto HttpSession, para mantener el estado entre varias solicitudes de una misma sesión

1.3. 8.4.5 Secuencias de comandos en el lado del servidor

1.3.1. La escritura incluso de una mera aplicación Web en un lenguaje de programación como Java o C supone una tarea que consume bastante tiempo y necesita muchas líneas de código y programadores familiarizados con las complejidades del lenguaje.

1.3.1.1. En los guiones en el lado del servidor, antes de entregar una página Web, el servidor ejecuta las secuencias incluidas en el contenido HTML de la página. Cada secuencia, al ejecutarse, puede generar texto que se añade a la página

1.3.1.2. El motivo es que, en muchas páginas Web dinámicas, la mayor parte del contenido sigue siendo estático. Los guiones de JSP realmente se traducen en código de servlet que luego se compila, pero se le ahorra al programador de la aplicación el problema de tener que escribir gran parte del código para crear el servlet.

2. 8.5 Creación de aplicaciones Web de gran tamaño

2.1. Al crear aplicaciones Web, gran parte del esfuerzo de programación se dedica a la interfaz de usuario, en lugar de a las tareas relacionadas con la base de datos.

2.2. 8.5.1 Creación de interfaces Web

2.2.1. Muchas estructuras HTML se generan mejor usando correctamente las funciones definidas de Java, en lugar de escribiéndose como parte del código de cada página Web

2.2.1.1. En lugar de escribir un largo código HTML para crear el menú necesario cada vez que se utilice, es preferible definir una función que genere el menú y llamar a esa función siempre que sea necesario

2.2.1.1.1. A menudo los menús se generan mejor a partir de datos de la base de datos, como una tabla que contenga los nombres de los países o de los estados

2.2.1.1.2. Los formularios para la introducción de fechas y de horas, o las introducciones de datos que exigen validación, se generan también mejor llamando a funciones definidas de manera adecuada. Esas funciones pueden generar código Javascript para llevar a cabo la validación en el generador.

2.3. 8.5.2 Active Server Pages de Microsoft

2.3.1. Active Server Pages (ASP) de Microsoft, y su versión más reciente, Active Server Pages.NET (ASP.NET), son una alternativa a JSP/Java muy utilizada

2.3.1.1. ASP.NET ofrece gran variedad de controles (comandos de guiones) que se interpretan en el servidor y generan HTML que se envía al cliente. Esos controles pueden simplificar de manera significativa la creación de interfaces Web.

2.3.1.2. ASP.NET es similar a JSP en el sentido de que el código de lenguajes como Visual Basic o C# se puede incorporar en HTML.

2.3.2. El control DataGrid ofrece una manera muy cómoda de mostrar el resultado de las consultas. Se asocia un control DataGrid con cada objeto DataSet, que suele ser el resultado de una consulta.

2.3.2.1. El servidor genera código HTML que muestra el resultado de la consulta en forma de tabla. Los encabezados de las columnas se generan de manera automática a partir de los metadatos del resultado de la consulta.

2.3.2.2. Además, los controles DataGrids presentan varias características, como la paginación, y permiten que el usuario ordene el resultado de las columnas elegidas

2.4. 8.5.3 Mejora del rendimiento de las aplicaciones

2.4.1. Ejemplo, supóngase que el código de la aplicación para la atención de cada solicitud de usuario necesita contactar con una base de datos mediante JDBC. La creación de cada nueva conexión JDBC puede tardar varios milisegundos, por lo que la apertura de una conexión nueva para cada solicitud de usuario no es una buena idea si hay que permitir altas tasas transaccionales.

2.4.1.1. La agrupación de conexiones se usa para reducir esta sobrecarga, que funciona de la manera siguiente.

2.4.1.2. El gestor del grupo de conexiones (parte del servidor de aplicaciones) crea un grupo (es decir, un conjunto) de conexiones abiertas ODBC o JDBC.

2.4.1.3. Si hay muchas conexiones abiertas que no se han usado durante algún tiempo, el gestor del grupo de conexiones puede cerrar algunas de las conexiones abiertas con la base de datos. Muchos servidores de aplicaciones, y los controladores ODBC y JDBC más recientes, ofrecen un gestor de grupo de conexiones incorporado.

2.4.1.4. Un error habitual que cometen muchos programadores al crear aplicaciones Web es olvidarse de cerrrar las conexiones JDBC abiertas.

2.4.1.5. Cada solicitud abre entonces una conexiónnueva con la base de datos, y ésta alcanza pronto el límite de conexiones que puede tener abiertas

2.4.1.6. simultáneamente. Estos problemas no suelen manifestarse en las pruebas a pequeña escala, ya que las bases de datos suelen permitir centenares de conexiones abiertas, sino que sólo se manifiestan con un uso intensivo.

3. 8.7 Autorización en SQL

3.1. Se ha visto el conjunto básico de privilegios de SQL en el Apartado 4.3, incluidos los privilegios delete,insert, select y update.

3.2. Además de estas formas de privilegios para el acceso a los datos, se pueden conceder (conceptualmente) a los usuarios diferentes tipos de autorización para la modificación del esquema de la base de datos:

3.2.1. Autorización para crear nuevas relaciones.

3.2.2. Autorización para añadir atributos a las relaciones o para eliminar atributos de las relaciones.

3.2.3. Autorización para descartar relaciones

3.3. La norma de SQL especifica un mecanismo de autorización primitivo para el esquema de la base de datos. Sólo el propietario del esquema puede llevar a cabo modificaciones del mismo. Por tanto, las modificaciones del esquema—como la creación o eliminación de relaciones, la adición o el descarte de atributos de las relaciones y la adición o descarte de índices—sólo puede ejecutarlas el propietario del esquema.

3.3.1. La forma de autoridad definitiva es la dada al administrador de la base de datos. El administrador de la base de datos puede autorizar nuevos usuarios, reestructurar la base de datos, etc. Esta forma de autorización es análoga a la de superusuario u operador de un sistema operativo.

3.4. 8.7.1 Concesión de privilegios

3.4.1. El usuario al que se le ha concedido alguna forma de autorización puede estar autorizado a transmitir esa autorización a otros usuarios. Sin embargo, hay que tener cuidado con el modo en que se puede transmitir esa autorización entre los usuarios para asegurar que la misma pueda retirarse en el futuro.

3.4.1.1. La transmisión de la autorización de un usuario a otro puede representarse mediante un grafo de autorización. Los nodos de este grafo son los usuarios.

3.5. 8.7.2 Concesión de privilegios en SQL

3.5.1. Recuérdese que la instrucción grant se usa para conceder autorizaciones. Su forma básica es:

3.5.1.1. • grant <lista de privilegios> on <nombre de la relación o de la vista> to <lista de usuarios o de roles> La lista de privilegios permite conceder varios privilegios en una sola instrucción

3.5.2. Se puede conceder el privilegio update sobre todos los atributos de la relación o sólo sobre algunos. Si se incluye el privilegio update en una sentencia grant, la lista de atributos sobre los que se va a conceder la autorización de actualización aparece opcionalmente entre paréntesis justo detrás de la palabra clave

3.5.3. update. Si se omite la lista de atributos, se concede el privilegio de actualización sobre todos los atributos de la relación.

3.6. 8.7.3 Roles

3.6.1. El concepto de roles captura este esquema. En la base de datos se crea un conjunto de roles. Las autorizaciones se pueden conceder a los roles exactamente igual que se conceden a los usuarios. Se concede un conjunto de roles (que puede estar vacío) que está autorizado a desempeñar a cada usuario de la base de datos.

3.6.1.1. Por tanto, los privilegios de los usuarios o roles consisten en:

3.6.1.1.1. Todos los privilegios concedidos directamente al usuario o rol.

3.6.1.1.2. Todos los privilegios concedidos a los roles que se han concedido al usuario o rol.

3.6.2. NOTA: Las acciones ejecutadas por las sesiones tienen todos los privilegios concedidos directamente usuario que las ha abierto, así como todos los privilegios concedidos a los roles que se hayan concedido (directa o indirectamente, a través de otros roles) a ese usuario. Por tanto, si al usuario Martín se le ha concedido el rol de director, las acciones ejecutadas por el usuario Martín tienen todos los privilegios concedidos a director, además de los privilegios concedidos a cajero si se ha concedido el rol de cajero al rol de director.

3.7. 8.7.4 Retirada de los privilegios

3.7.1. Para retirar autorizaciones se usa la instrucción revoke. Adopta una forma casi idéntica a la de grant:

3.7.2. revoke <lista de privilegios> on <nombre de la relación o de la vista> from <lista de usuarios o de roles> [restrict j cascade]

3.7.2.1. Por tanto, para retirar los privilegios concedidos anteriormente hay que escribir

3.7.2.1.1. revoke select on sucursal from U1, U2, U3

3.7.2.1.2. revoke update (importe) on préstamo from U1, U2, U3

3.7.2.1.3. revoke references (nombre_sucursal) on sucursal from U1

3.7.3. la retirada de privilegios de un usuario o rol puede provocar que otros usuarios o roles también pierdan esos privilegios. Este comportamiento se denomina retirada en cascada.

3.7.3.1. se puede omitir la palabra clave cascade, como se ha hecho en los ejemplos anteriores. La instrucción revoke puede especificar también restrict:

3.7.3.1.1. revoke select on sucursal from U1, U2, U3 restrict

3.7.3.1.2. En este caso, el sistema devuelve un error si hay retiradas en cascada y no lleva a cabo la acción de retirada. La instrucción revoke siguiente sólo retira la opción grant, no el privilegio select propiamente dicho:

3.7.3.1.3. revoke grant option for select on sucursal from U1

3.8. 8.7.5 Autorización en vistas, funciones y procedimientos

3.8.1. Vistas

3.8.1.1. Las vistas pueden ocultar datos que el usuario no necesite ver. La capacidad de las vistasde ocultar datos sirve tanto para simplificar el uso del sistema como para mejorar la seguridad.

3.8.2. Privilegio execute

3.8.2.1. Se puede conceder sobre una función o sobre un procedimiento y permite que el usuario los ejecute

3.8.2.2. Usuario actual

3.8.2.2.1. Se configura como creador de la función o del procedimiento mientras se ejecutan.

3.9. 8.7.6 Limitaciones de la autorización de SQL

3.9.1. La tarea de autorización recae sobre el servidor de aplicaciones; se soslaya todo el esquemade autorización de SQL

3.9.2. Problemas

3.9.2.1. El código para comprobar la autorización se entremezcla con el resto del código de la aplicación

3.9.2.2. La implementación de la autorización mediante el código de las aplicaciones, en lugar de especificarla declarativamente en SQL, hace que sea difícil garantizar la ausencia de agujeros de seguridad.

3.10. 8.7.7 Trazas de auditoría

3.10.1. Es un registro histórico de todas las modificaciones (inserciones, borrados o actualizaciones de la base de datos, junto con información sobre el usuario que realizó la modificación y el momento en que se produjo.

4. 8.1-Interfaces de usuario y herramientas

4.1. La mayor parte de las personas interactúan con los sistemas de bases de datos usando alguno de los medios siguientes:

4.1.1. Los formularios y las interfaces gráficas de usuario permiten a los usuarios introducir los valores que completan las consultas predefinidas.

4.1.2. Los generadores de informes permiten que se generen informes predefinidos sobre el contenido actual de la base de datos.

4.1.3. Las herramientas de análisis de datos permiten que los usuarios examinen y analicen los datos de manera interactiva.

4.2. 8.1.1-Formularios e interfaces gráficas de usuario

4.2.1. Las interfaces de formularios se usan mucho para introducir datos y extraer información de las bases de datos, mediante consultas predefinidas.

4.2.2. Los programadores pueden crear formularios e interfaces gráficas de usuario usando navegadores Web como parte visible al usuario, o usando formularios y otros servicios ofrecidos por las interfaces de programación de aplicaciones.

4.2.3. Las comprobaciones de errores sencillas pueden llevarse a cabo definiendo restricciones para los campos del formulario. Aunque estas restricciones se pueden comprobar al ejecutar la transacción, la detección temprana de los errores ayuda a los usuarios a corregirlos con rapidez.

4.3. 8.1.2-Generadores de informes

4.3.1. Los generadores de informes son herramientas para generar informes legibles a partir de las bases de datos. Integran la consulta a la base de datos con la creación de texto con formato y con gráficos resumen

4.3.1.1. El desarrollador de aplicaciones puede especificar el formato de los informes mediante los servicios de formato del generador de informes. Se pueden usar variables para almacenar parámetros como el mes y el año y para definir los campos del informe

4.3.1.2. Gran variedad de marcas, como Crystal Reports y Microsoft ofrecen herramientas para la generación de informes. Varias familias de aplicaciones, como Microsoft Office, incluyen procedimientos para incrustar directamente en los documentos los resultados con formato de las consultas a la base de datos.

5. 8.2 Interfaces Web para bases de datos

5.1. WorldWideWeb, es un sistema distribuido de información basado en el hipertexto. Las interfaces Web con las bases de datos se han vuelto muy importantes. Tras describir varios motivos.

5.1.1. Web es importante como parte visible al usuario de las bases de datos por varios motivos: los navegadores Web ofrecen una interfaz universal para la información facilitada por los sistemas subyacentes ubicados en cualquier parte del mundo.

5.1.2. Con el crecimiento de los servicios de información y del comercio electrónico en Web, las bases de datos usados para los servicios de información, la ayuda a la toma de decisiones y el procesamiento de transacciones deben estar conectados a Web.

6. 8.3 Fundamentos de Web

6.1. 8.3.1 Los localizadores uniformes de recursos

6.1.1. Un localizador uniforme de recursos es un nombre globalmente único para cada documento al que se puede tener acceso en Web

6.1.2. La primera parte del URL indica el modo en que se puede tener acceso al documento: “http” indica que se puede tener acceso al documento mediante el protocolo de transferencia de hipertexto

6.2. 8.3.2 El lenguaje de marcas de hipertexto

6.2.1. Las figuras muestran el modo en que HTML puede mostrar una tabla y un formulario sencillo que permite que los usuarios seleccionen el tipo de un menú e introduzcan un número en un cuadro de texto.

6.2.2. Aunque el código HTML se puede crear usando un editor de texto sencillo, hay varios editores que permiten la creación directa de texto HTML usando una interfaz gráfica.

6.3. 8.3.3 Secuencias de comandos del lado del cliente y applets

6.3.1. La inclusión de código ejecutable en los documentos permite que las páginas Web sean activas y ejecuten actividades como la animación mediante la ejecución de programas en el sitio local, en lugar de presentar simplemente textos y gráficos pasivos.

6.3.1.1. Un riesgo que aparece al permitir estos programas es que, si el diseño del sistema no se realiza con cuidado, el código de programa incluido en la página Web

6.3.1.2. Javascript puede usarse incluso para modificar de manera dinámica el código HTML que se muestra. El navegador divide el código HTML en una estructura arbórea dentro de la memoria definida por una norma denominada modelo de objetos documento

6.4. 8.3.4 Los servidores Web y las sesiones

6.4.1. 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

6.4.1.1. En consecuencia, los servidores Web pueden actuar con facilidad como intermediarios para ofrecer acceso a gran variedad de servicios de información.

6.4.1.2. 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

6.4.1.3. Para implementar sesiones a pesar del cierre de las conexiones hay que almacenar información adicional en el cliente y devolverla con cada solicitud de la sesión Con objeto de realizar un seguimiento de las sesiones de usuario, una aplicación puede generar un identificador de sesión

6.4.1.4. Si una aplicación necesita identificar de manera segura a los usuarios, puede definir la cookie sólo después de autentificar al usuario

7. 8.6 Disparadores

7.1. Un disparador es una instrucción que el sistema ejecuta de manera automática como efecto secundario de la modificación de la base de datos.

7.1.1. Para diseñar un mecanismo disparador es necesario:

7.1.1.1. 1. Especificar las condiciones en las que se va a ejecutar el disparador. Esto se descompone en un evento que provoca la comprobación del disparador y una condición que se debe cumplir para que se ejecute el disparador.

7.1.1.2. 2. Especificar las acciones que se van a realizar cuando se ejecute el disparador.

7.1.1.3. Este modelo de disparadores se denomina modelo evento-condición-acción de los disparadores.

7.1.1.3.1. Este modelo de disparadores se denomina modelo evento-condición-acción de los disparadores. La base de datos almacena los disparadores como si fuesen datos normales, por lo que son persistentes y están accesibles para todas las operaciones de la base de datos. Una vez que se introduce un disparador en la base de datos, el sistema de bases de datos asume la responsabilidad de ejecutarlo cada vez que se produzca el evento especificado y se satisfaga la condición correspondiente.

7.2. 8.6.1 Necesidad de los disparadores

7.2.1. Obsérvese que los sistemas de disparadores en general no pueden realizar actualizaciones fuera de la base de datos

7.2.2. Los disparadores son mecanismos útiles para alertar a los usuarios o para iniciar de manera automática ciertas tareas cuando se cumplen determinadas condiciones.

7.3. 8.6.2 Los disparadores en SQL

7.3.1. Los sistemas de bases de datos basados en SQL emplean mucho los disparadores, aunque antes de SQL:1999 no eran parte de la norma de SQL. Por desgracia, cada sistema de bases de datos implementó su propia sintaxis para los disparadores, lo que produjo incompatibilidades

7.3.2. El evento y las acciones del disparador pueden adoptar muchas formas:

7.3.2.1. El evento del disparador puede ser insert o delete, en lugar de update.

7.3.2.2. Para las actualizaciones el disparador puede especificar las columnas cuya actualización provoca su ejecución.

7.3.2.3. La cláusula referencing old row as se puede utilizar para crear una variable que almacene el valor anterior de una fila actualizada o borrada. La cláusula referencing new row as se puede usar con las inserciones además de con las actualizaciones.

7.3.2.4. Los disparadores se pueden activar antes (before) del evento (insert/delete/update) en lugar de después (after) del evento.

7.3.2.5. Estos disparadores pueden servir como restricciones adicionales que pueden impedir actualizaciones no válidas.

8. 8.8 Seguridad de las aplicaciones

8.1. 8.8.1 Técnicas de cifrado

8.1.1. Norma de cifrado de datos (Data Encryption Standard, DES)

8.1.1.1. Realiza tanto la sustitución de los caracteres como su reordenación con base en la clave de cifrado.

8.1.2. Norma de cifrado avanzado (Advanced Encryption Standard, AES)

8.1.2.1. Algoritmo Rijndael (denominado así por sus inventores, V. Rijmen y J. Daemen)

8.1.2.2. Algoritmo de clave compartida (o de clave simétrica) en el que los usuarios autorizados comparten una clave.

8.1.3. Cifrado de clave pública

8.1.3.1. Esquema alternativo que evita parte de los problemas que se afrontan con el DES. Se basa en dos claves; una clave pública y otra privada.

8.2. 8.8.2 Soporte del cifrado en las bases de datos

8.2.1. En el contexto de las bases de datos, el cifrado se puede llevar a cabo en diferentes niveles.

8.2.1.1. En el nivel inferior, los bloques de disco que contienen datos de la base de datos se pueden cifrar, usando una clave disponible para el software del sistema de bases de datos.

8.2.2. Sistemas de bases de datos compartidos

8.2.2.1. Para proteger los datos contra este tipo de accesos, se debe aplicar el cifrado antes de que los datos lleguen a la base de datos.

8.3. 8.8.3 Autenticación

8.3.1. Hace referencia a la tarea de comprobar la identidad de las personas o del software que se conectan a la base de datos. La forma más sencilla consta de una contraseña secreta que se debe presentar cuando se abre una conexión con la base de datos.

8.3.1.1. Firmas digitales

8.3.1.1.1. Desempeñan el rol electrónico de las firmas físicas en los documentos. La clave privada se usa para firmar los datos y los datos firmados se pueden hacer públicos.

8.3.1.2. Autenticación centralizada

8.3.1.2.1. Se refiere asistemas que permiten que el usuario se autentifique ante un servicio central de autenticación y los demás sitios Web pueden autentificar al usuario mediante ese sitioWeb; así, se puede usar la misma contraseña para tener acceso a varios sitios.

8.3.1.2.2. Esto se conoce como sistemas de inicio de sesión único.

8.3.1.3. Certicados digitales

8.3.1.3.1. Las claves públicas están firmadas por una agencia de certificación, cuya clave pública es bien conocida.

8.3.1.3.2. Verificación

8.3.1.4. Sistemas de respuesta por desafío

8.3.1.4.1. El sistema de bases de datos puede verificar la autenticidad del usuario descifrando la cadena con la misma contraseña secreta, y comparando el resultado con la cadena de desafío original. Este esquema garantiza que las contraseñas no circulan por la red.

8.4. 8.8.4 Protección de las aplicaciones

8.4.1. Los desarrolladores de aplicaciones deben prestar mucha atención a la seguridad, para evitar los ataques de inyección de SQL y otros ataques de usuarios malévolos.

8.4.2. Ataque de inyección de SQL

8.4.2.1. El atacante logra hacer que una aplicación ejecute una consulta de SQL creada por él.

8.5. 8.8.5 Intimidad

8.5.1. La protección de la intimidad de los datos es una importante labor para las aplicaciones de bases de datos. Muchos países tienen disposiciones legales sobre el mantenimiento de la intimidad de determinadas clases de datos, como los datos médicos.

8.5.2. Datos privados

8.5.2.1. Pueden desempeñar un papel importante en muchas tareas, como la detección de los efectos secundarios de las drogas o la detección de la propagación de una epidemia.