unidad ii desarrollo de aplicaciones web

27
INSTITUTO TECNOLÓGICO SUPERIOR DE CHICONTEPEC INGENIERÍA EN SISTEMAS COMPUTACIONALES SEPTIMO SEMESTRE GRUPO UNO PROGRAMACION WEB LIC. SAID JAIR GUERRA ESCUDERO UNIDAD II: DESARROLLO DE APLICACIONES WEB EQUIPO: JAPHET ING. MARICELA DE LA CRUZ MARTINEZ ING. ZACARIAS MARQUEZ CRUZ ING. EPIFANIO MARTINEZ HERNANDEZ ING. DAVID MARTINEZ DE LA CRUZ

Upload: zacarias-marquez-cruz

Post on 07-Jul-2015

1.493 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 1

INSTITUTO TECNOLÓGICO SUPERIOR DE CHICONTEPEC

INGENIERÍA EN SISTEMAS COMPUTACIONALES

SEPTIMO SEMESTRE GRUPO UNO

PROGRAMACION WEB

LIC. SAID JAIR GUERRA ESCUDERO

UNIDAD II: DESARROLLO DE

APLICACIONES WEB

EQUIPO:

JAPHET ING. MARICELA DE LA CRUZ MARTINEZ ING. ZACARIAS MARQUEZ CRUZ ING. EPIFANIO MARTINEZ HERNANDEZ ING. DAVID MARTINEZ DE LA CRUZ

Page 2: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 2

INDICE

2.1 Arquitectura de las aplicaciones Web ................................................................................... 03

2.2 Lenguajes de programación del lado del cliente ............................................................... 06

2.3 Lenguajes de programación del lado del servidor ............................................................ 07

2.4 Ambientes para el desarrollo de aplicaciones Web ......................................................... 08

2.5 Metodologías para el desarrollo de aplicaciones Web .................................................... 08

2.6 Aspectos de seguridad ................................................................................................................. 16

Page 3: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 3

2.1 Arquitectura de las aplicaciones Web.

En la imagen que mostramos a continuación se puede observar un esquema

simplificado de la topología de Internet.

Por un lado se tiene la red de la empresa (Intranet), donde se tiene un Servidor Web en

el cual se publican las páginas Web.

Este servidor puede ser también el servidor de base de datos, o se puede tener un

servidor específico para realizar esta tarea.

Los usuarios de Internet tendrán acceso a las páginas que sean públicas y podrán

acceder a los datos almacenados en la empresa a través de páginas dinámicas.

Por otro lado, los usuarios de la empresa (Intranet) podrán acceder a las páginas

públicas y a las páginas privadas de la empresa

TIPOS DE ARQUITECTURAS

Page 4: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 4

Arquitectura de Dos Capas

La arquitectura tradicional de cliente/servidor también es conocida como arquitectura

de dos capas. Requiere una interfaz de usuario que se instala y corre en una PC o estación de

trabajo y envía solicitudes a un servidor para ejecutar operaciones complejas. Por ejemplo,

una estación de trabajo utilizada como cliente puede correr una aplicación de interfaz de

usuario que interroga a un servidor central de bases de datos.

Ventajas del Sistema de Dos Capas:

El desarrollo de aplicaciones en un ambiente de dos capas es mucho mas rápido que

en ambientes anteriores, pero no es necesariamente mas rápido que con el nuevo

ambiente de tres capas.

Las herramientas para el desarrollo con dos capas son robustas y evaluadas. Las

técnicas de prototipo se emplean fácilmente.

Las soluciones de dos capas trabajan bien en ambientes no dinámicos estables, pero no

se ejecutan bien en organizaciones rápidamente cambiantes.

Desventajas del Sistema de Dos Capas:

Los ambientes de dos capas requieren control excesivo de las versiones y demandan

esfuerzo de distribución de la aplicación cuando se les hacen cambios. Esto se debe al

hecho de que la mayoría de la aplicación lógica existe en la estación de trabajo del

cliente.

La seguridad del sistema en un diseño de dos capas es compleja y a menudo requiere

administración de las bases de datos; esto es debido al número de dispositivos con

acceso directo al ambiente de esas bases de datos.

las herramientas del cliente y de la base de datos, utilizadas en diseños de dos capas,

constantemente están cambiando. La dependencia a largo plazo de cualquier

herramienta, puede complicar el escalamiento futuro o las implementaciones.

Page 5: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 5

Arquitectura de Tres Capas

La arquitectura de tres capas es un diseño reciente que introduce una capa intermedia

en el proceso. Cada capa es un proceso separado y bien definido corriendo en plataformas

separadas. En la arquitectura tradicional de tres capas se instala una interfaz de usuario en la

computadora del usuario final (el cliente). La arquitectura basada en Web transforma la

interfaz de búsqueda existente (el explorador de Web), en la interfaz del usuario final.

Ventajas de la Arquitectura de Tres Capas:

Las llamas de la interfaz del usuario en la estación de trabajo, al servidor de capa

intermedia, son más flexibles que en el diseño de dos capas, ya que la estación solo

necesita transferir parámetros a la capa intermedia.

Con la arquitectura de tres capas, la interfaz del cliente no es requerida para

comprender o comunicarse con el receptor de los datos. Por lo tanto, esa estructura de

los datos puede ser modificada sin cambiar la interfaz del usuario en la PC.

El código de la capa intermedia puede ser reutilizado por múltiples aplicaciones si está

diseñado en formato modular.

La separación de roles en tres capas, hace más fácil reemplazar o modificar una capa

sin afectar a los módulos restantes.

Desventajas de las Arquitecturas de Tres Capas y basadas en Web:

Los ambientes de tres capas pueden incrementar el tráfico en la red y requiere más

balance de carga u tolerancia a las fallas.

Los exploradores actuales no son todos iguales. La estandarización entre diferentes

proveedores ha sido lenta en desarrollarse. Muchas organizaciones son forzadas a

escoger uno en lugar de otro, mientras que cada uno ofrece sus propias y distintas

ventajas.

Page 6: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 6

2.2 Lenguajes de programación del lado del cliente.

HTML El lenguaje llamado HTML indica al navegador donde colocar cada texto, cada imagen o

cada video y la forma que tendrán estos al ser colocados en la pagina. El lenguaje consta de

etiquetas que tienen esta forma < B> o < P>. Cada etiqueta significa una cosa, por ejemplo < B>

significa que se escriba en negrita (bold) o < P> significa un párrafo, < A> es un enlace, etc.

Casi todas las etiquetas tienen su correspondiente etiqueta de cierre, que indica que a partir

de ese punto no debe de afectar la etiqueta. Por ejemplo < /B> se utiliza para indicar que se

deje de escribir en negrita. Así que el HTML no es más que una serie de etiquetas que se

utilizan para definir la forma o estilo que queremos aplicar a nuestro documento.

JAVASCRIPT

Javascript es un lenguaje de programación utilizado para crear pequeños programitas

encargados de realizar acciones dentro del ámbito de una página web. Se trata de un lenguaje

de programación del lado del cliente, porque es el navegador el que soporta la carga de

procesamiento. Su uso se basa fundamentalmente en la creación de efectos especiales en las

páginas y la definición de interactividades con el usuario.

Las sentencias escritas en javascript se encapsulan entre las etiquetas < script> y < /script>.

por ejemplo, si en el código de una página Web incluimos la sentencia

Ejemplo

< script>

window.alert("Bienvenido a mi sitio web. Gracias...")

< /script>

al abrir la pagina con el navegador se nos mostrara una ventana de bienvenida

APPLETS DE JAVA

Es otra manera de incluir código a ejecutar en los clientes que visualizan una página web. Se

trata de pequeños programas hechos en Java, que se transfieren con las páginas web y que el

navegador ejecuta en el espacio de la página. Los Applets de Java están programados en Java y

precompilados, es por ello que la manera de trabajar de estos varia un poco con respecto a los

lenguajes de script como Javascript.

Los applets son más difíciles de programar que los scripts en Javascript y requerirán unos

conocimientos básicos o medios del lenguaje Java. La principal ventaja de utilizar applets

consiste en que son mucho menos dependientes del navegador que los scripts en Javascript,

incluso independientes del sistema operativo del ordenador donde se ejecutan. Además, Java

es más potente que Javascript, por lo que el número de aplicaciones de los applets podrá ser

mayor. Como desventajas en relación con Javascript cabe señalar que los applets son más

lentos de procesar y que tienen espacio muy delimitado en la página donde se ejecutan, es

decir, no se mezclan con todos los componentes de la página ni tienen acceso a ellos. Es por

ello que con los applets de Java no podremos hacer directamente cosas como abrir ventanas

secundarias, controlar Frames, formularios, capas, etc.

Page 7: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 7

VISUAL BASIC SCRIPT

Es un lenguaje de programación de scripts del lado del cliente, pero solo compatible

con Internet Explorer. Es por ello que su utilización esta desaconsejada a favor de Javascript.

Está basado en Visual Basic, un popular lenguaje para crear aplicaciones Windows. Tanto su

sintaxis como la manera de trabajar están muy inspirados en el. Sin embargo, no todo lo que

se puede hacer en Visual Basic lo podremos hacer en Visual Basic Script, pues este último es

una versión reducida del primero. El modo de funcionamiento de Visual Basic Script para

construir efectos especiales en páginas web es muy similar al utilizado en Javascript y los

recursos a los que se puede acceder también son los mismos: el navegador.

FLASH

Flash es una tecnología, y un programa, para crear efectos especiales en páginas web.

Con Flash también conseguimos hacer páginas dinámicas del lado del cliente. Flash en

realidad no es un lenguaje; Sin embargo, si tuviéramos que catalogarlo en algún sitio quedaría

dentro del ámbito de las páginas dinámicas de cliente. Para visualizar las "películas" Flash,

nuestro navegador debe tener instalado un programita (plug-in) que le permita visualizarlas.

CSS

CSS, es una tecnología que nos permite crear páginas web de una manera más exacta.

Gracias a las CSS somos mucho mas dueños de los resultados finales de la página, pudiendo

hacer muchas cosas que no se podía hacer utilizando solamente HTML, como incluir

márgenes, tipos de letra, fondos, colores... Incluso podemos definir nuestros propios estilos en

un archivo externo a nuestras páginas; así, si en algún momento queremos cambiar alguno de

ellos, automáticamente se nos actualizaran todas las paginas vinculadas de nuestro sitio. CSS

son las siglas de Cascading Style Sheets, en español Hojas de estilo en Cascada.

2.3 Lenguajes de programación del lado del servidor.

CGS Es el sistema más antiguo que existe para la programación de las páginas dinámicas de

servidor. Actualmente se encuentra un poco desfasado por diversas razones entre las que

destaca la dificultad con la que se desarrollan los programas y la pesada carga que supone

para el servidor que los ejecuta. Los CGI se escriben habitualmente en el lenguaje Perl, sin

embargo, otros lenguajes como C, C++ o Visual Basic pueden ser también empleados para

construirlos.

PERL

Perl es un lenguaje de programación interpretado, al igual que muchos otros lenguajes

de Internet como Javascript o ASP. Esto quiere decir que el código de los scripts en Perl no se

compila sino que cada vez que se quiere ejecutar se lee el código y se pone en marcha

interpretando lo que hay escrito. Además es extensible a partir de otros lenguajes, ya que

desde Perl podremos hacer llamadas a subprogramas escritos en otros lenguajes. También

desde otros lenguajes podremos ejecutar código Perl.

Page 8: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 8

ASP

ASP (Active Server Pages) es la tecnología desarrollada por Microsoft para la creación

de páginas dinámicas del servidor. ASP se escribe en la misma página web, utilizando el

lenguaje Visual Basic Script o Jscript (Javascript de Microsoft).

PHP

PHP es el acrónimo de Hipertext Preprocesor. Es un lenguaje de programación del lado del servidor gratuito e independiente de plataforma, rápido, con una gran librería de funciones y mucha documentación.

JSP JSP es un acrónimo de Java Server Pages, que en castellano vendría a decir algo como

Paginas de Servidor Java. Es, pues, una tecnología orientada a crear páginas web con

programación en Java. Con JSP podemos crear aplicaciones web que se ejecuten en variados

servidores web, de múltiples plataformas, ya que Java es en esencia un lenguaje

multiplataforma. Por tanto, las JSP podremos escribirlas con nuestro editor HTML/XML

habitual.

2.4 Ambientes para el desarrollo de aplicaciones Web.

Los IDE (ambientes integrados de desarrollo) para aplicaciones Web son muy numerosos. Considerar los que permitan trabajar con los diferentes lenguajes para Web. Algunos son específicos para lenguajes del lado del servidor. Por ejemplo, Visual Studio solo soporta ASP.NET del lado del servidor. Existen Ideas de buena cantidad, libres y gratuitos de buena calidad.

Algunos ejemplos de IDE para Web:

Microsoft Visual Studio. Microsoft Web Developer Express. Mono (para ASP.NET). NetBeans. Jbuilder. Eclipse.

2.5 Metodologías para el desarrollo de aplicaciones Web.

Los sitios Web se presentan de todas formas y modelos, desde sencillas página a megasitios que gestionan los negocios para empresas a nivel mundial, el proceso de desarrollar un sitio implica los mismos pasos básicos:

CONCEPTUALIZAR E INVESTIGAR

Esta primera fase es emocionante. Se empieza con una idea (“sitio de venta en línea”,

“ambiente virtual de aprendizaje”, “banca en línea”, etc.) y luego realizar una lluvia de ideas

sobre cómo se va a manifestar como sitio Web. Este es el momento de las listas y bocetos,

pizarras y cuadernos. ¿Qué va hacer emociónate? ¿Qué va haber en la primera pagina?

Page 9: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 9

No se debe preocupar por el ambiente de desarrollo Web hasta que se tenga las ideas y

estrategias juntas. Esto implica formular a los clientes (o así mismo) una serie de preguntas

referidas a recursos, objetivos y lo más importante, los usuarios.

Muchas grandes empresas de diseño y desarrollo Web dedican más tiempo a

investigar e identificar las necesidades del cliente que cualquier otro nivel de producción.

Para sitios grandes, este paso puede incluir casos de estudios, entrevistas, y un amplio estudio

de mercado.

Es posible que no se necesite dedicar esa cantidad de esfuerzo (o dinero) a la

preparación de un sitio Web, pero sigue siendo acertado tener claro las expectativas y

recursos al principio del proceso, particularmente cuando se trata de trabajar de acuerdo a

un presupuesto.

Una muestra de las preguntas que se podrían formular a los clientes o a uno mismo,

durante la fase de investigación del diseño pudriera ser:

Estrategias ¿Por qué crea este sitio Web? ¿Qué espera conseguir? ¿Qué ofrece a los usuarios? ¿Qué quiere que los usuarios hagan en su sitio Web? ¿Después de que se hayan

marchado? ¿Qué hace volver a sus visitantes?

Descripción generan del sitio ¿Qué tipo de sitio es? (¿Meramente proporcional? ¿Una publicación? ¿Un punto de

venta? ¿Qué características tendrá? ¿Cuáles son sus mensajes más importantes? ¿Quiénes son sus competidores? ¿Qué hacen bien? ¿Qué se podría mejorar?

Audiencia objetivo ¿Quién es su principal audiencia? ¿Tiene experiencia con internet y conocimientos técnicos? ¿Puede haber previsiones de la velocidad de conexión de un usuario medio? ¿Plataforma? ¿Tamaño de monitor? ¿Navegador? ¿Cada cuanto se espera que visiten el sitio? ¿Cuánto tiempo permanecerá durante

una visita media?

Contenido ¿Quién es responsable de generar el contenido original? ¿Cómo se enviara el contenido?

Recursos ¿Qué recursos se ha dedicado al sitio (presupuesto, personal, tiempo)? ¿Requiere el sitio un sistema de gestión de contenido? ¿El mantenimiento se puede gestionar por personal del cliente? ¿Tiene un servidor para su sitio? ¿Ha registrado un nombre de dominio para su sitio?

Aspecto grafico ¿Tiene en mente un aspecto para el sitio?

Page 10: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 10

¿Tiene ya estándares existentes, como logos y colores, que se tengan que incorporar ¿Forma el sitio parte de un sitio más grande o grupos de sitios con estándares de

diseño con lo que tiene que coincidir? ¿Qué aspecto tiene otros sitios Web? ¿Qué le gusta de ellos? ¿Qué sitios no le gustan? Para los sitios Web dinámicos, se requiere del diseño de la base de datos que

almacenará la información que se procese, siendo necesario después de la investigación diseñar los modelos para su representación como lo es un modelo Entidad-Relación.

En la figura se muestra el modelo entidad – relación de una porción de una base de datos de ventas en línea.

También se deben obtener el conjunto de tablas que conformarán la base de datos, que para este caso queda de la siguiente manera:

categoria(id_cat, Descripcion)

producto (id_pro, clave, nombre, precio, existencia, preciov, id_cat)

clientes (id_clie, clave, nom, dir, tel)

factura (id_fac, fecha)

ventas (id_clie, id_pro, id_fac, cantc, pu)

administradores (id_ad, nom, dir, tel)

CREAR Y ORGANIZAR CONTENIDO

La parte más importante de un sitio Web es su contenido. A pesar del ruido sobre tecnologías

y herramientas, el contenido sigue siendo el rey de internet. Tiene que haber algo de valor,

tanto sea algo de leer, algo que hacer o algo que comprar que atraiga a los visitantes y haga

que regresen. Es acertado ser sensible a la necesidad de un buen contenido.

Page 11: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 11

Creación de contenido

Cuando se crea un sitio Web para un cliente, se necesita establecer inmediatamente

quien será responsable de generar el contenido que va en el sitio. Idealmente, el cliente es

responsable de generar su propio contenido y destinara los recursos apropiados para hacerlo.

Diseño de la información

Una vez que se tiene el contenido o al menos una idea clara del contenido que tendrá el

siguiente paso es organizar el contenido para que sea accesible de forma fácil e intuitiva para

su audiencia. Nuevamente, este es el momento para las listas y bocetos. Se debe tener todo lo

que necesita en el sitio en una mesa. Organizarlo por importancia, categoría, etc. Decidir lo

que va en la página principal y lo que se divide en apartados. Pensar en cómo los usuarios

esperarían encontrar la información en su sitio y diseñar en base a sus necesidades y

suposiciones en mente.

El resultado de la fase de diseño de información puede ser un diagrama (a menudo

llamado mapa de sitio) que revela la “forma” global del sitio.

Las páginas en diagramas normalmente se representan por rectángulos; las flechas

indican vínculos entre páginas o secciones del sitio.

El mapa del sitio proporciona a los diseñadores una idea de la escala del sitio y como se

relacionan las secciones y ayudas en el diseño de navegación.

En la figura se muestra el mapa general de un pequeño sitio de ventas en línea que permite el inicio de sesión a dos tipos de usuarios. Es pequeño comparado con los diagramas para sitios corporativos, pero demuestra cómo se representan las paginas y las conexiones entre paginas.

No hay nada mejor que lápiz y papel cuando llega al momento de poner en marcha y documentar el proceso creativo. Antes de implementar cualquier cosa no hay mejor forma de

Page 12: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 12

expresar las ideas rápidamente que en un bloc de notas, en una servilletas o pizarra, o cualquier superficie que se encuentre disponible. Se trata de creatividad.

DESARROLLAR EL ASPECTO VISUAL Y COMPORTAMIENTO

El aspecto visual de un sitio hace referencia a su diseño grafico y apariencia visual global incluido su esquema de color tipografía y estilo de imagen.

Dibujar

Esta es otra oportunidad para sacar lápices, rotuladores y cuadernos. O quizás se prefiera trabajar las ideas en alguna herramienta de edición grafica (como Photoshop). De cualquier forma, es el momento de ser creativo y probar cosas. El resultado es uno o más bocetos que muestra él estilo visual propuesto para el sitio.

Un boceto es normalmente un archivo grafico plano en las dimensiones aproximadas de la ventana del navegador. Cuando es necesario mostrar interactividad (como un efecto), algunos diseñadores utilizan una capa que se puede activar y desactiva para simular el efecto.

En algunos casos puede ser necesario crear una página principal prototipo en HTML para mostrar la interactividad y las características animadas.

En la fase de dirección artística es para explorar el aspecto que tendrá el sitio, por lo que los bocetos gráficos planos son normalmente adecuados.

El proceso de dirección de arte En la mayoría de los trabajos de desarrollo Web profesionales, el cliente recibe dos o tres bocetos que muestran su página principal en varios estilos visuales.

En algunos casos, se puede incluir un diseño de segundo o tercer nivel si es importante mostrar cómo se desarrolla el diseño en varios niveles.

De forma ideal, se debe contar con una lista de elementos que cada página debe contener, incluidas imágenes obligatorias, elementos de navegación y un manuscrito para el texto. Puede incluso haber un diagrama de la funcionalidad.

Page 13: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 13

Después de revisar los bocetos, el cliente elige uno, a menudo con una lista de cambios, solicitando una nueva ronda de diseño hasta que el diseño final esté aprobado.

PRODUCIR UN PROTOTIPO

Una vez que el diseño esta aprobado y el documento están listos, el sitio entra en la fase de producción se puede realizar por una persona. Es más común en el diseño Web comercial contar con un equipo de personas que trabajan en tareas especializadas.

El departamento de arte utiliza sus herramientas graficas para crear todos los gráficos necesarios para el sitio. El departamento de producción codifica el contenido con HTML y demás lenguajes requeridos, formatea el texto con hojas de estilo. Pueden crear las hojas finales o simplemente plantillas que se rellenan con el contenido en el momento. Los programadores escriben los scripts y aplicaciones del lado del servidor necesarias para que el sitio funcione según lo esperado. Puede haber también elementos multimedia como videos o películas flash. Es decir, todas las partes del sitio se tienen que crear.

En algún momento, todas estas piezas se juntan en un sitio. Este no es necesariamente otro paso, sino que más bien es un proceso continuo, como en el diseño de software, el primer prototipo a menudo se denomina la versión “alfa”. Se debería poner disponible únicamente a las personas dentro del equipo Web para su revisión antes de presentárselo al cliente. Después de los cambios, la segunda revisión se denomina “beta”. El cliente debería implicarse en esta fase. En este punto, hay todavía mucho que hacer antes de que el sitio esté listo para llevarse a la Web. Existen también sitios ahí afuera, a menudo aplicaciones Web y servicios, que ponen disponibles sus versiones beta al público o una base limitada de suscriptores con el fin de recibir sus observaciones o comentarios.

PROBARLO

Todos los sitios Web se tienen que probar antes de que estén listos para el público. Los desarrolladores Web profesionales dedican tiempo y recursos al calendario de producción para realizar pruebas. Tanto formalmente como informalmente, los sitios se deberían probar para funcionalidad básica, rendimiento en diferentes entornos de navegación y facilidad de uso.

El sitio se puede probar localmente (en el disco duro) antes de subirse a su lugar definitivo en el servidor Web. También es de utilidad establecer un sitio de pruebas oculto en el servidor de modo que los problemas se puedan resolver en su entorno natural antes de hacerlo público.

Comprobación básica de calidad

Como mínimo, todos los sitios se deberían comprobar para asegurar de que funcionan.

En el negocio del diseño Web, comprobar un sitio en busca de funcionalidad básica es parte

de lo que se denomina la fase de control de calidad de la producción.

Las siguientes preguntas abordan algunos de los requerimientos mínimos antes de publicar un sitio en la Web.

¿Está todo el contenido?: asegúrese de que no falta ningún contenido.

Page 14: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 14

¿Existen errores tipográficos o errores gramaticales?: la importancia de revisar un texto a veces se pasa por alto, pero los errores en la copia pueden dañar seriamente la credibilidad percibida del sitio.

¿Funcionan todos los vínculos?: es fácil dejar vínculos sin vincular durante el proceso de producción. También es posible que algunos archivos se hayan movido de sitio y que los vínculos no estén actualizados. Antes de salir a la Web, se debe comprobar que todos los vínculos en las páginas son correctos.

¿Se muestran todas las imágenes?: Confirmar que todos los archivos gráficos están en el directorio adecuado y que la ruta de acceso correcta se utiliza en los elementos para evitar que falten imágenes.

¿Funcionan adecuadamente todos los scripts y aplicaciones?: Ejecutar las paginas en algunos escenarios típicos de usuario (completando formularios, comprando un producto, o cualquier otra interacción que tenga sentido para el sitio) para asegurarse de que todo funciona como debería.

Prueba del entorno de navegación

El sitio se verá en un amplio rango de entornos de navegación que impactara en la

forma que tiene y sus funciones. Otra parte de la comprobación de calidad es comprobar las

páginas bajo tantas condiciones como sea posible.

Normalmente se debe probar el sitio en diferentes sistemas operativos y numerosas versiones de navegador.

Un sitio robusto no tendrá ningún problema cuando se pruebe de acuerdo a los siguientes criterios.

¿Qué aspecto tiene la página en diferentes navegadores?: ¿en otra plataforma?

Los navegadores son desiguales en su soporte de hojas de estilo en cascada, por

lo que si se utiliza CSS para el diseño de página, es necesario que se vea en

tantos navegadores como sea posible

¿Cómo funciona el sitio en diferentes navegadores?: ¿en otra plataforma? De

forma similar, existen diferencia de navegador en el soporte de script, por lo

tanto, es conveniente realizar pruebas de funcionalidad bajo más de una

configuración de navegador/plataforma.

¿Qué les pasa a las paginas cuando la ventana del navegador se hace muy

grande o muy pequeña?: ¿Qué pasa si el texto se amplía mucho o se reduce

mucho? ¿Puede el sitio soportar una cierta cantidad de ventanas y tamaño de

texto? ¿Se sale el contenido de la pantalla? ¿Se divide la página?

¿Se puede utilizar el sitio en un navegador de solo texto?: ¿Qué verán los

usuarios si acceden a su página con un teléfono móvil o quipo similar? Las

páginas deberían estar accesibles en todos los dispositivos de navegación.

Merece la pena ver el sitio bajo condiciones mínimas para ver si puede realizar

alguna modificación para mejorar la experiencia.

¿Es el sitio útil con los gráficos desactivados?: Algunos usuarios con conexiones

más lentas pueden navegar por la Web con gráficos desactivados en el

navegador para agilizar la visualización del contenido. Algunos navegadores

Page 15: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 15

muestran el texto alternativo para cada elemento de imagen pero otros no. ¿Ha

tenido en cuenta a esos usuarios?

¿Qué sucede si el usuario no puede ver los elementos multimedia?: Sería

estupendo si el usuario tuviera los plugins necesarios para ver la multimedia

como las películas flash o Windows media, pero desafortunadamente, este no es

el caso. ¿Proporciona ayuda para obtener los plugins que necesita? ¿Existen

versiones alternativas de su contenido para aquellos que no puedan ver la

multimedia?

¿Qué aspecto tiene el sitio en una conexión de modem por línea telefónica?:

existen todavía una importante cantidad de usuarios que acceden a la Web con

conexiones lentas. ¿Hay algo que puede hacer para que sus páginas se carguen

rápidamente?

Pruebas de usuario

Otro tipo de pruebas que es importante realizar son las pruebas de usuario. Este proceso implica sentar a gente en el sitio y ver lo sencillo que les es encontrar información o completar tareas. Las pruebas de usuario se llevan a cabo pronto en el proceso de desarrollo para que el diseño del sitio se pueda ajustar antes de que empiece la producción seria. No es raro realizar pruebas adicionales de usabilidad en intervalos regulares durante el proceso de producción e incluso después de que se haya lanzado el sitio, para que el sitio se pueda modificar para atender mejor las necesidades de los visitantes.

Existen compañías que se puede contratar para que realicen pruebas controladas, pero el precio normalmente es elevado, siendo una opción solamente para sitios Web comerciales con importantes presupuestos. Sin embargo, es posible llevar a cabo una prueba de usuario informal con los miembros de la familia, compañeros de trabajo, amigos y cualquier otra persona que consiga que se siente delante de la computadora y conteste algunas preguntas.

Existen dos tipos generales de pruebas de usuario: comportamiento observado y pruebas orientadas a tareas. En la primera, la persona se sienta delante del sitio y lo explore por su cuenta. Proporcionan información a medida que se va avanzando, anotando lo que le gusta y lo que no le gusta, que está claro y que está confuso.

En las pruebas orientadas a tareas, a los usuarios se les proporciona una serie de tareas de dificultad variada a realizar en el sitio como “averiguar quien ofrece las videocámaras a mejor precio”. Un observador toma notas de cómo se completa la tarea, al igual que lo vínculos que sigue el usuario en el proceso de completar la tarea.

¿Pueden los usuarios decir a primera vista de que se trata un sitio? ¿Existen obstáculos en la forma de alcanzar los objetivos? ¿Pueden encontrar

fácilmente información crítica o realizar una compra? ¿Disfrutan las personas utilizando el sitio? ¿Existe una tarea determinada o característica en el sitio al que pare que

tropiezan múltiples usuarios?

Page 16: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 16

LANZAR EL SITIO

Una vez que se tiene todos los detalles resueltos para el sitio, es el momento de enviarlo al servidor final, y ponerlo disponible al mundo.

Es una buena idea realizar una última ronda de pruebas para asegurarse que todo sea transferido con éxito y que las páginas funcionan adecuadamente bajo la configuración del servidor final. Esto puede parecer trabajo adicional, pero esto es la reputación del negocio o la del cliente la que va en el éxito del sitio Web, por lo que prestar atención a los detalles es esencial.

MANTENER EL SITIO

Un sitio Web nunca está del todo terminado. De hecho la posibilidad de realizar actualización y mantener el contenido actualizado es una de las ventajas del medio Web. Es importante tener una estrategia para lo que ocurriría con el sitio después de su lanzamiento inicial.

Aunque el mantenimiento es un proceso continuo que ocurre después de que el sitio haya sido creado inicialmente, las decisiones relacionadas con el mantenimiento se deberían tomar pronto en el proceso de desarrollo. Por ejemplo, se debería dejar claro quién será el responsable del mantenimiento del sitio, también decidir que partes del sitio se actualizaran y con qué frecuencia. La actualización afectara a la forma en que se organice la información y diseño del sitio.

También se debería considerar la vida útil del sitio. Si es un sitio que proporciona un evento especifico, ¿Qué sucederá con el sitio cuando el evento termina? Incluso en los sitios diseñados para estar en funcionamiento un tiempo requerirán normalmente un rediseño después de unos años para mantenerse al tanto de los cambios de contenido y las practicas actuales de publicaciones.

2.6 Aspectos de seguridad.

En este tema se analiza el papel de la seguridad en los sitios Web dinámicos. Se indicará quién puede estar interesado en la información y como podrían obtenerla, los principios implicados en la creación de una política para evitar este tipo de problemas y algunas tecnologías disponibles para salvaguardad la seguridad de un sitio Web incluida la criptografía, la autentificación y el rastreo.

Entre los aspectos de seguridad están:

IMPORTANCIA DE LA INFORMACIÓN

Al analizar el tema de la seguridad, lo primero que se debe valorar es la importancia de los datos que se está protegiendo, tanto para el propietario como para los posibles atacantes.

Puede resultar tentador creer que siempre debería aplicarse el nivel más alto seguridad a todos los sitios, pero la protección tiene un coste. Antes de decidir el esfuerzo o los gastos que se desean invertir en el sistema de seguridad, es necesario determinar el valor de la información.

Page 17: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 17

El valor de la información almacenada en el equipo de un usuario que lo utilice para divertirse, el de una empresa, el de un banco y el de una organización militar es diferente, al igual que varían los esfuerzos que invertirá un atacante para obtener acceso a dicha información. Se debe determinar el valor que tiene los contenidos almacenados en los equipos para un visitante mal intencionado.

Los usuarios que utilizan la computadora como pasatiempo dispondrán de tiempo limitado para profundizar en el tema de la seguridad de sus sistemas o en aumentarla. Como la información que almacenaran en sus equipos es poco probable que interese a otros usuarios, los ataques serán poco frecuentes y el esfuerzo invertido en ellos será limitado. Sin embargo, todos los usuarios de equipos con conexión a la red deberían tomar una serie de precauciones ya que incluso los equipos con los datos menos interesantes pueden utilizarse como plataformas para lanzar ataques a otros sistemas.

Los equipos militares son un objetivo obvio tanto para individuos como para gobiernos extranjeros. Para atacar a los gobiernos es necesario disponer de muchos medios, por lo que resulta aconsejable invertir en personal y otro tipo de recursos para garantizar la aplicación de todas las precauciones posibles.

AMENAZAS CONTRA LA SEGURIDAD.

Las amenazas variaran en función del tipo de sitio Web pero se pueden citar las siguientes:

Exposición de datos confidenciales

Perdida o destrucción de datos

Modificar datos

Denegación de servicio

Errores en el software

Repudio

Exposición de datos confidenciales

La información almacenada en los equipos o la transmitida de un equipo a otro, pueden

ser confidenciales. Podrían tratarse de información destinada únicamente a determinadas

personas, como listas de precios de mayoristas, información suministrada por un cliente,

como su contraseña, datos de contacto o el número de una tarjeta de crédito.

Los servidores Web no son el lugar más aconsejable en el que se deba guardar

información secreta. Si se almacenan los datos sobre nomina o el plan para la dominación

del mundo en una computadora, no se debería utilizar el mismo que el utilizado como

servidor Web. Los servidores Web son equipos diseñados para su acceso público por lo que

solo deberían contener información que se ofrezca públicamente o que se acabe de recoger

del público. Para reducir el riesgo de la exposición de datos, se debe limitar los métodos de

acceso a la información y los usuarios que disponen de dicho acceso, lo cual implica

desarrollar las labores de diseño teniendo presente la seguridad, configurar el servidor y el

software de manera correcta, programar con atención, realizar pruebas exhaustivas, eliminar

los servicios innecesarios de servidor Web y exigir autentificación.

Se deben Suprimir los servicios innecesarios de un servidor Web para reducir el

número de puntos débiles potenciales. Cada servicio que este ejecutando puede resultar

vulnerable. Es necesario mantener todos los servicios actualizados para eliminar los puntos

vulnerables conocidos. Los servicios no utilizados pueden resultar peligrosos. Si no se utiliza

Page 18: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 18

el comando rcp, ¿Por qué tenerlo instalado?, los sistemas operativos actuales instalaran una

gran cantidad de servicios que no se necesitan y que se debería eliminar.

La autenticación implica solicitar a los usuarios que demuestren su identidad. Cuando

un sistema sabe quien realiza la petición, puede decidir si dicha persona dispone de acceso.

Existen varios métodos de autenticación de los cuales solo se utilizan dos de forma

generalizada: las contraseñas y las firmas digitales.

Los datos también corren el riesgo de exposición en sus trayectos por la red. Las redes

TCP/IP incorporan una gran cantidad de funciones que han contribuido a convertirlas en el

estándar de facto para la conexión de diversas redes como internet. Sin embargo, la seguridad

no se incluye entre ellas. Los protocolos TCP/IP dividen los datos en paquetes y los reenvían

de equipo en equipo hasta que alcanza su destino.

Por lo tanto, los datos pasan a través de una gran cantidad de computadoras hasta llegar a su

destinatario, como se ilustra en la figura 2.8, y cualquiera de ellas puede ver los datos en su

tránsito.

Los datos enviados a través de internet recorren una gran cantidad de equipos potencialmente inseguros.

Existen comandos y aplicaciones de software para ver la ruta que siguen los datos desde un equipo origen hasta el equipo de destino. Si los datos van dirigidos a un equipo de un mismo país, podrían atravesar una decena de equipos diferentes. Si fueran destinados a un equipo situado fuera del país, el número de intermediarios podría supera los veinte. Si una organización es de gran tamaño y consta de una red compleja, los datos podrían recorrer hasta cinco equipos antes de abandonar el edificio. Para proteger la información confidencial, se pueden cifrar los datos antes de enviarlos a través de una red y descifrarlos en el otro extremo. Los servidores Web suelen utilizar el sistema SSL (Secure Socket Layer), desarrollando por Netscape para realizar esta tarea mientras los datos navegan entre los servidores Web y los navegadores.

Se trata de una forma bastante barata en términos de costes y de esfuerzos de proteger las transmisiones, pero como el servidor necesita cifrar y descifrar los datos en lugar de enviarlos y recibirlos simplemente, el número de visitantes por segundo al que puede dar servicio el equipo se reduce drásticamente, debido al tiempo que requiere este proceso.

Page 19: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 19

Pérdida o destrucción de la información

La pérdida de datos puede resultar más costosa que su apropiación indebida. Si se llevan meses construyendo un sitio, recogiendo información sobre usuarios y pedidos, si no se ha realizado ninguna copia de seguridad de esos datos, se verán obligados a volver a escribir el sitio Web y a comenzar desde cero. Un pirata informático podría colarse en el sistema y formatear el disco duro. También podría ocurrir que un programador o un administrador poco atento eliminen el disco sin querer o que un disco se estropee. Los discos duros en ocasiones fallan.

Se pueden adoptar varias medidas para reducir la probabilidad de perder datos. Proteger los servidores contra ataques informáticos. Reducir al mínimo los empleados con acceso al equipo. Contratar únicamente personal competente y atento. Comprar discos duros de calidad.

Independientemente del causante de las pérdidas de datos, solo hay una forma de protección real: las copias de seguridad. La realización de copias de seguridad es una función vital. Asegúrese de volcar sus datos de manera periódica y de almacenar las copias de seguridad lejos de los equipos habituales. Aunque es poco probable que los locales de su empresa se quemen o sufran alguna otra catástrofe, el almacenamiento de una copia de seguridad fuera de ellos es una medida de seguridad barata y eficaz. Modificar datos

Aunque la pérdida de datos puede causar muchos daños, su modificación puede resultar aun peor. La eliminación completa de los datos no tardaría mucho tiempo en detectarse sin embargo detectar una modificación de datos requeriría de mucho más. Entre las formas de modificación se incluyen cambios en los archivos de datos ejecutables. La intención de un pirata informático puede ser modificar el aspecto de la Web u obtener beneficios fraudulentos. Mediante la sustitución de archivos ejecutables con versiones saboteadas, un pirata informático que haya logrado entrar una vez en el sistema podría crear una puerta trasera secreta para futuras visitas. Se puede proteger los datos contra su modificación al viajar por la red mediante una firma. Esta técnica no impide la modificación de los datos pero, si el receptor comprueba que la firma coincide al recibir los archivos, sabrá que el archivo no se ha modificado. Si cifra los datos para proteger contra la visualización no autorizada, resultaran muy difíciles de modificar durante el trayecto sin su detección.

La protección de los archivos almacenados en un servidor frente a su modificación exige el uso de las funciones de permisos de acceso a archivos que incorpore el sistema operativo y protege el sistema de acceso no autorizado. La aplicación de permiso de archivo permite autorizar el uso de sistema, pero no modificar los archivos del sistema ni de otros usuarios.

Detectar las modificaciones puede resultar difícil. Si se descubre que alguien ha penetrado en el sistema de seguridad, ¿Cómo se puede saber si se han modificado archivos importantes? Algunos archivos, como los archivos datos que se almacenan en una base de datos, están ideados para cambiar con el paso del tiempo. Sin embargo, la intención de otros es permanecer invariables desde su instalación a menos que se actualicen deliberadamente. La modificación de programas y datos puede resultar engañosa, y aunque los programas puedan reinstalarse si se sospecha que han sido modificados, puede que no sepa que versión de los datos esta “intacta”.

Existen aplicaciones que permiten comprobar la integridad de los archivos, como Tripwire (htt://www.tripwire.com). Esta aplicación registra información sobre archivos en

Page 20: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 20

un estado seguro, probablemente inmediatamente después de la instalación, y permite utilizarla en un momento posterior para verificar si los archivos han variado.

Negación de servicio

Una de las amenazas más difíciles de evitar es lo que se denominado Negación de servicio (DoS en Ingles). Se produce cuando alguien impide a los usuarios acceder a un servicio o retrasa el acceso a un servicio en el que el tiempo es crucial. A principio de 2000, se produjo una oleada de ataques DoS distribuidos a importantes sitios Web. Entre las víctimas se encontraba yahoo!, eBay, Amazon, ETrade y Buy.com. Estos sitios están acostumbrados a niveles de trafico que solo se puede concebir en sueños, pero siguen siendo vulnerables a este tipo de ataques. Aunque los atacantes no ganan nada con conseguirlo colapsar un sitio, el propietario del mismo puede perder ingreso, tiempo y reputación.

Algunos sitios esperan concentrar sus transacciones en determinadas horas. Algunos sitios de apuestas en línea experimentan una mayor demanda antes de un evento deportivo importante. Una de las razones de la dificultad de evitar este tipo de ataques es que se pueden introducir de diferentes formas. Se puede instalar un programa en el equipo de la victima que utilice el tiempo del procesador del sistema, el envió inverso de correo basura o recurrir a una herramienta automatizada. El correo basura inverso envía correo basura en el que se incluye el destinatario como emisor. De esta forma, el destinatario recibirá miles de respuestas de usuario enfadados.

Existen herramientas automatizadas que pueden lanzar ataques DoS a un destinatario no concreto. No hay que ser un genio para buscar los puntos débiles de una serie de equipos e instalar la herramienta en los mismos. Como el proceso esta automatizado, un atacante puede instalar la herramienta en un solo host en cuestión de segundos. Una vez afectados varios equipos, reciben instrucciones para inundar el destino con tráfico de red.

Protegerse de ataques DoS es una difícil tarea. Si se realiza una búsqueda, se pueden descubrir los puertos predeterminados que utilizan las herramientas DoS habituales y cerrarlos. Puede que el enrutador cuente con un mecanismo para limitar el porcentaje de tráfico que utiliza determinados protocolos como por ejemplo ICMP. Resulta más sencillo detectar los host de una red utilizada para atacar a otros que proteger los equipos de posibles ataques. Si todos los administradores de redes se comprometieran a vigilar su propia red, los ataques DoS no serian un problema. Como existen tantos métodos de ataque, la única defensa realmente eficaz consiste en controlar el comportamiento del tráfico normal y contar con una serie de expertos para que adopten las medidas oportunas en caso de que se produzca alguna situación fuera de lo normal. Errores en el software

Es posible que el software que se haya comprado, obtenido o escrito incluya errores graves. Dados los cortos plazos de desarrollo asignado a los proyectos Web, es muy probable que el software incluya errores. Todas las iniciativas comerciales basadas en procesos informáticos resultaran vulnerables a software con errores.

Los errores en el software pueden causar todo tipo de compartimientos impredecibles incluida la indisponibilidad del servicio, lagunas de seguridad, pérdidas financieras y servicios deficientes. Entre las causad habituales de los errores se pueden citar las malas especificaciones técnicas, suposiciones erróneas realizadas por los desarrolladores y pruebas incompletas. Malas especificaciones técnicas

Cuanto más escasa y ambigua resulte su documentación de diseño, más probables que el producto final incluya errores. Aunque puede que resulte obvio especificar la anulación de un pedido si se rechaza la tarjeta de crédito de un cliente. Mientras menos experiencia tengan

Page 21: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 21

los desarrolladores con el tipo de sistemas con el que están trabajando, más precisas deberían ser las especificaciones técnicas.

Suposiciones erróneas hechas por los desarrolladores

Los diseñadores y los programadores de un sistema necesitan realizar una gran cantidad de suposiciones. Es de esperar que las documenten y que resulten aceptadas. Sin embargo, las suposiciones pueden resultar erróneas. Por ejemplo, un desarrollador podría asumir que los datos de entrada serán validos, que no incluirán caracteres inusuales o qué cantidad de caracteres introducidos será inferior a un tamaño dado. También podría asumir que no tendrán lugar dos acciones simultaneas que entren en conflicto o que una tarea de procesamiento compleja lleva más tiempo que una tarea sencilla.

Suposiciones como estas se pueden deslizar por que suelen ser ciertas. Un pirata informático puede aprovecharse de un desbordamiento de búfer generado por una suposición hecha por un programador con respecto a la longitud máxima de los datos de entrada o un usuario legitimo puede obtener mensajes de error confuso o abandonar la visita por que a los desarrolladores no se les ocurrió prever que el nombre de una persona puede incluir un apostrofe. Este tipo de errores se pueden detectar y solucionar mediante una combinación de pruebas y revisiones detallada del código.

Históricamente, el sistema operativo o las debilidades del nivel de aplicación exploradas por los piratas informática se relacionan con los desbordamientos de búfer o con los errores de sincronización.

Pruebas incompletas

Resulta prácticamente imposible verificar todas las posibles entradas de los usuarios en todos dispositivos de hardware existentes, con todos los sistemas operativos posibles y utilizando todos los parámetros de usuarios disponibles. Es necesario implementar un plan de pruebas bien diseñado que verifique todas las funciones del software en un conjunto representativo de equipos. Un conjunto de pruebas bien planteado debería probar todas las líneas de código del proyecto al menos una vez. De manera ideal, estas pruebas deberían automatizarse para poder ejecutarlas en los equipos seleccionados con muy poco esfuerzo. El problema más importante de esta operación es que se trata de un trabajo repetitivo muy poco atractivo. Aunque hay gente a la que le gusta romper cosas, hay muy pocas a las que le guste romper la misma cosa una y otra vez. Es importante que en este proceso participen otras personas además de los desarrolladores originales. Uno de los objetivos principales de las pruebas es detectar las suposiciones erróneas realizadas por los desarrolladores. Es probable que una persona no implicada realice suposiciones diferentes. Además, los profesionales no suelen mostrarse muy implicados a buscar errores dentro de su trabajo. Repudio

El ultimo riesgo que considerar es el repudio. El repudio tiene lugar cuando una parte implicada en una transacción niega haber tomado parte en ella. En el comercio electrónico puede tratarse de una persona que realice un pedido a través del sitio Web y que rehace la autorización para realizar el cargo sobre su tarjeta de crédito, o una persona que acepte algo procedente del correo electrónico y que después afirme que alguien falsifico dicho correo. De manera ideal, las transacciones financieras deberían garantizar la seguridad de que ninguna de las partes las repudiara. Ninguna parte podría denegar su participación en una transacción o, para ser más exacto, ambas partes podrían demostrar de manera terminante las acciones realizadas por la otra parte ante un tercero, como por ejemplo un tribunal. En la práctica, esto no suele ocurrir. La autenticación ofrece ciertas ganancias sobre la parte con la

Page 22: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 22

que se está tratando. Los certificados digitales de autenticación emitidos por una organización de confianza brindan una gran fiabilidad. También deberían poder certificarse los contenidos de los mensajes enviados por cualquiera de las partes. Para las transacciones entre las partes con una relación ya establecida, los certificados digitales y el uso de comunicaciones cifradas o firmadas proporcionan una forma efectiva de limitar el repudio. Si las transacciones son aisladas, como el contacto inicial entre un sitio de comercio electrónico y un usuario que utilice una tarjeta de crédito, esta opción no resulta tan práctica. Las compañías de comercio electrónico deben estar dispuestas a probar su identidad y a contratar los servicios de una autoridad de certificación como VeriSign (http://www.verisign.com) o Thawte (http://www.thawte.com) para garantizar la autenticidad de la compañía. En las pequeñas transacciones, los comerciantes están dispuestos a admitir un determinado nivel de fraude o riesgo de repudio a cambios de mantener el nivel de transacciones. EQUILIBRIO ENTRE USABILIDAD, RENDIMIENTO, COSTE Y SEGURIDAD

Por su propia naturaleza, la Web es un lugar peligroso. Este medio está diseñado para permitir que numerosos usuarios soliciten servicios desde sus equipos. La mayor parte de estas peticiones realizan peticiones de páginas Web perfectamente legítimas, pero al conectar sus equipos a internet también existe la posibilidad de que la gente realice otros tipos de conexiones. Aunque resulta tentador asumir que es apropiado establecer el nivel de seguridad, más alto, no suele ser así. Si se desea estar completamente protegido, tendrá que colocar todos los equipos en una caja fuerte sin conexión a la red. Para que los equipos resulten accesibles se puedan utilizar, es necesario rebajar el nivel de seguridad de alguna manera. Se debe buscar el equilibrio entre la seguridad, la usabilidad, el coste y el rendimiento. Si se aumenta la seguridad de un servicio se puede reducir su capacidad de uso, por ejemplo, al limitar lo que puede hacer la gente o pedir que se identifiquen. El incremento de la seguridad también puede reducir el nivel de rendimiento de los equipos. La ejecución de software para lograr que el sistema resulte más seguro (como sistemas de encriptación y detección de intrusos, escáneres de virus y operaciones de registros de usuario) absorbe recursos. Se necesita mucho más potencial de procesamiento para suministrar una sesión cifrada, como una conexión SSL a un sitio Web, que una sesión normal. La pérdida de rendimiento se puede compensar con la adquisición de equipos o hardware más rápido que este especialmente diseñado para operaciones de encriptación. El rendimiento, la usabilidad, el coste y la seguridad se pueden considerar como objetivos contrapuestos. Se deberán examinar los pros y los contras de cada opción y tomar una decisión que logre un compromiso en función del valor de la información, del presupuesto, de la cantidad de visitas esperadas y de los obstáculos que considere que aceptaran los usuarios legítimos. CREAR UNA POLÍTICA DE SEGURIDAD

Una política de seguridad es un documento que describe

La filosofía general sobre seguridad en una organización Que se debe proteger: software, hardware y datos Quien es responsable de la protección de estos elementos

Page 23: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 23

Estándares de seguridad e indicadores para medir el cumplimiento de dichos estándares

A la hora de desarrollar la política de seguridad se pueden aplicar las mismas reglas utilizadas para escribir un conjunto de requisitos de software. En esta política no debería hablarse de implementaciones o soluciones, si no de requisitos de seguridad y objetivos dentro del entorno. Y no debería actualizarse a menudo. Se debería crear un documento en el que se establezcan las directrices utilizadas para medir el cumplimiento de la política de seguridad en un entorno dado. Se pueden establecer directrices diferentes para las distintas partes de la organización. Sería como un documento de diseño o un procedimiento manual en el que se recoja que se está haciendo para garantizar el nivel de seguridad requerido. PRINCIPIO DE AUTENTICACIÓN

El objetivo de la autenticación es demostrar que alguien es quien dice ser. Existen muchas

formas de suministrar autenticación pero como en el caso de muchas medidas de seguridad, cuanto más seguro son los métodos más problemáticos resultan de utilizar.

Las técnicas de autenticación incluyen el uso de contraseñas, firmas digitales, medidas biométricas mediante escáneres de huellas y medidas que implican el uso de hardware como tarjetas inteligentes. En la Web solo se utilizan dos de manera extendida: las contraseñas y las firmas digitales.

Las medidas biométricas y la mayor parte de las soluciones de hardware implican el uso de dispositivos de entrada especiales, lo que limitaría el acceso a aquellos usuarios autorizados con computadoras equipados. Esta opción podría resultar aceptable o incluso deseable para obtener acceso a los sistemas internos de una organización, pero reduce gran parte de las ventajas de permitir el acceso al sistema en la Web.

Las contraseñas resultan fáciles de implementar, sencillas de utilizar y no requieren el uso de dispositivos de entrada especiales. Suministran un determinado nivel de autenticación pero es posible que resulten insuficientes para sistemas de alta seguridad.

El concepto de una contraseña es sencillo. El usuario y el sistema conocen la contraseña. Si otro visitante afirma ser un usuario y conoce su contraseña, el sistema lo aceptará. Este sistema resulta seguro siempre y cuando nadie más sepa o pueda adivinar la contraseña. Las contraseñas presentan en sí mismas varios puntos débiles y no suministran autenticación segura. FUNDAMENTOS DE LA ENCRIPTACIÓN

Un algoritmo de encriptación es un proceso matemático que transforma información en una cadena aparentemente aleatoria de datos. Los datos de los que se parte son textos sin procesar, aun que no es importante para el proceso lo que represente la información (que se trate de texto o de otro tipo de datos). La información cifrada se conoce como texto encriptado, aunque se parezca poco a un texto en la mayor parte de los casos. El texto que se desea cifrar se introduce en un motor de encriptación, que podría ser un programa informático. El motor devuelve el texto encriptado.

Encriptación de mensajes

Page 24: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 24

Muchas contraseñas se almacenan utilizando un algoritmo de encriptación de una sola dirección. Para poder determinar si una contraseña introducida resulta correcta, no es necesario descifrar la contraseña almacenada. En su lugar, bastara con cifrar la contraseña introducida y compararla con la versión almacenada, esta es mecanismo utilizado con la función sha1() de PHP. Muchos procesos de encriptación se pueden invertir, aunque no todos. El proceso inverso al encriptación se conoce como decriptación. En la siguiente figura se muestra un proceso de encriptación de doble sentido.

El proceso de encriptación toma texto sin procesar y lo transforma en texto cifrado con aspecto aleatorio. El proceso de decriptación toma el texto encriptado y lo transforma en el texto original. La criptografía tiene unos 4000 años de antigüedad, pero alcanzo la mayoría de edad en la segunda guerra mundial. Su crecimiento desde entonces ha seguido de cerca al desarrollo de las redes de computadoras. En un principio solo era utilizada por las instituciones militares y organizaciones financieras. En los años 70 se extendió su uso y en los años 90 se hizo omnipresente. En los últimos años, la encriptación ha pasado de ser un concepto que solo la gente conocía por las películas de espías y de la segunda guerra mundial a convertirse en algo de lo que se habla en los periódicos y se utiliza cada vez que se compra algo a través de navegadores Web. Existen muchos algoritmos de encriptación disponibles. Algunos utilizan una clave secreta o privada, y otros, utilizan una clave pública y una clave privada distinta. Encriptación de la clave privada

La encriptación de la clave privada se basa en usuarios autorizados que conocen o disponen de acceso a una clave. Esta clave debe mantenerse en secreto ya que de lo contrario los mensaje cifrados podrían ser leídos por personas no autorizadas como se muestra en al figura anterior, tanto el remitente (la persona que cifra el mensaje) como el receptor (el que descifra el mensaje) tienen la misma clave. El algoritmo de clave secreta más utilizado es DES (del ingles Data Ecryptation Stanar, Estandar de Encriptación de Datos). Fue desarrollado por IBM en los años 70 y fue adoptado como el estándar americano para comunicaciones comerciales y gubernamentales no clasificadas. La velocidad de las computadoras ha aumentado mucho desde entonces y DES ha quedado obsoleto desde al menos 1998. Otros sistemas de claves secretas conocidos son RC2, RC4, RC5. Triple DES e IDEA. El sistema triple DES resulta bastante seguro (paradójicamente, este sistema es dos veces más seguro que DES; si se necesita un sistema tres veces más seguro, se puede escribir un programa que implemente algoritmo DES quíntuple). Utiliza el mismo algoritmo DES, pero

Page 25: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 25

se aplica tres veces con hasta tres claves diferentes. El mensaje de texto se cifra con la primera clave, se descifra con la segunda y se vuelve a cifrar con la tercera. Uno de los defectos de la encriptación con clave secreta es que para enviar un mensaje seguro a alguien, es necesario disponer de una forma segura de enviar una clave, ¿por qué no utilizarla para enviar el mensaje? Afortunadamente, en 1976 se produjo un avance significativo cuando diffie y hellman publicaron el primer método de clave pública. Encriptación de clave pública

La encriptación de clave pública se basa en dos claves, una clave pública y una clave privada. Como se ilustra en la siguiente figura, la clave pública se utiliza para cifrar mensajes y la clave privada para descifrarlos. La ventaja de este sistema es que la clave pública, como su nombre indica, se puede distribuir públicamente. Todo el mundo al que se le entregue la clave pública puede enviar un mensaje seguro al receptor, mientras se tenga en secreto la clave privada, solo el receptor podrá descifrar el mensaje.

FIRMAS DIGITALES

Las firmas digitales están relacionadas con la criptografía de clave pública, pero invierten los papeles de las claves públicas y privadas. Un remitente puede cifrar y firmar digitalmente un mensaje con su clave secreta. Cuando se recibe el mensaje, el receptor puede descifrarlo con la clave secreta del remitente. Como el remitente es la única persona con acceso a la clave secreta, el receptor puede estar bastante seguro de la procedencia del mensaje y de que no se ha alterado. Las firmas digitales resultan muy útiles. Garantizan la procedencia de los mensajes y dificultan el rechazo del envió por parte del remitente. De todos modos, es importante tener en cuenta, que aunque el mensaje se ha cifrado, cualquier persona que tenga la clave publica puede leerlo. Si bien se utilizan las mismas técnicas y claves, la finalidad de uso de la encriptación en este caso es impedir la modificación de los mensajes y su repudio, no su lectura. Como el cifrado de clave publica resulta bastante lento en el caso de mensajes de gran tamaño, se suele utilizar otro tipo de algoritmo, llamado función hash, para mejorar la eficacia. La función hash calcula un mensaje o valor hash para cualquier mensaje que se le indique. El valor generado por el algoritmo no es importante. Lo importante es que el resultado sea fijo, es decir, que sea el mismo cada vez que se utiliza una entrada dada, que sea pequeño y que el algoritmo sea rápido. CERTIFICADOS DIGITALES

La posibilidad de verificar que un mensaje no se ha alterado y que procede de un usuario o de un equipo dado es un gran avance. Para las interacciones comerciales, resultaría incluso mejor disponer de la posibilidad de vincular a dicho usuario o servidor a una entidad legal real como

Page 26: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 26

una persona o compañía. Un certificado digital combina una clave pública con los detalles de una organización o individuo en un formato digital. En un certificado, se tiene la clave pública de otra parte, por si se quiere enviar un mensaje cifrado y tener los detalles de la otra parte que podrá estar seguro de que no se ha alterado. Los certificados suministran una estructura de confianza. Si se confía en la CA, se puede confiar en aquellas partes en las que confía la CA y a su vez en aquellas partes en las que confía la parte certificada. Los certificados digitales se suele utilizar para conferir un aire de respetabilidad a un sitio Web de comercio electrónico. Con un certificado emitido por una CA conocida, los navegadores Web pueden establecer conexiones SSL al sitio sin generar cuadros de dialogo de advertencia. Los servidores Web que permite conexiones SSL se suelen llamar servidores Web seguros. SERVIDORES WEB SEGUROS

Se puede utilizar el servidor Web apache, el servidor IIS de Microsoft o cualquier otro servidor Web comercial para establecer comunicaciones seguras con navegadores a través de SSL. Apache permite utilizar el sistema operativo UNIX, que suelen resultar más fiables pero más difíciles de configurar que IIS. El servidor apache se puede utilizar en una plataforma Windows. El uso de SSL sobre IIS implica sencillamente instalar IIS, generar un par de claves e instalar el certificado. El uso de SSL en apache requiere la instalación de tres paquetes diferentes: Apache, Mod_SSL y OpenSSL. AUDITORIAS Y REGISTROS

El sistema operativo permitirá registrar todo tipo de evento. Los eventos en los que se puede estar interesado desde el punto de vista de la seguridad incluyen errores de red, acceso a archivos de datos, etc. Los archivos de registro pueden servir de ayuda para detectar comportamientos erróneos o malintencionados cuando tienen lugar. También se puede utilizar para determinar cómo tuvo lugar un problema o una intrusión si se examina tras observar problemas. Los archivos de registro presentan dos problemas principales: el tamaño y la veracidad. Si se establecen los criterios para detectar y registrar problemas en el nivel de mayor paranoia, se obtendrán registros gigantescos que resultan muy difíciles de examinar. Para trabajar con archivos de registro de gran tamaño, se tendrá que recurrir a una herramienta existente o derivar algunas secuencias de comandos de la política de seguridad establecida para realizar búsquedas de eventos “interesantes” dentro de los registros. CORTAFUEGOS

El objetivo de los cortafuegos es alejar una red del mundo exterior. De la misma forma que los cortafuegos de un edificio o de un coche impiden que el fuego se extienda a otros compartimientos, los cortafuegos de red impiden que el caos se extienda por una red. Los cortafuegos están diseñados para proteger los equipos de una red del mundo exterior. Filtran y rechazan el tráfico que no cumple las reglas establecidas en ellos. Restringe las actividades de la gente y los equipos situados fuera de los cortafuegos. En ocasiones, los cortafuegos también se pueden utilizar para restringir las actividades de los equipos incluidos en su interior. Uno cortafuegos puede limitar los protocolos de red que se pueden utilizar, los host a los que se pueden conectar o forzar el uso de un servidor proxy para reducir costes en términos de ancho de banda.

Page 27: Unidad ii desarrollo de aplicaciones web

UNIDAD II: DESARROLLO DE APLICACIONES WEB

Página 27

COPIA DE SEGURIDAD DE LOS DATOS No se puede subestimar la importancia de las copias de seguridad en ningún plan de recuperación de desastres. El hardware y los inmuebles se pueden asegurar y sustituir, o los sitios alojados en cualquier host, pero si el software Web personal desaparece, ninguna entidad aseguradora podrá sustituirlo. Se deben hacer copias de seguridad periódicas de todos los componentes del sitio Web (páginas estáticas, secuencias de comandos y bases de datos). La frecuencia depende del dinamismo del sitio. Si se trata de un sitio completamente estático, bastara con hacer una copia cuando se modifique. Sin embargo, el tipo de sitio que se está tratando es probable que cambie con frecuencia, en especial si se reciben pedidos en línea. La mayor parte de los sitios con un tamaño razonable deben alojarse en un servidor con un sistema RAID (del ingles Redundant Array of Inexpensive Disk, Matriz redundante de discos independientes) que admite funciones de réplica. De esta forma, queda cubierta la probabilidad de que ocurra un fallo en el disco duro. sin embargo, se debe considerar que ocurriría en una situación que afecta a la matriz, al equipo a al edificio entero. La frecuencia con la que se deben realizarlas está en función con el volumen de actualización. Estas copias de seguridad deberían almacenarse en un lugar diferente y a ser posible en un lugar distinto y seguro contra incendios, robos o desastres naturales. SEGURIDAD FISICA

Las amenazas de seguridad consideradas hasta el momento hacen referencia a elementos intangibles como el software, pero no se debería descuidar la seguridad física de un sistema. Se debe prever un sistema de aire acondicionado y sistemas de protección contra el fuego, personas (torpes o criminales), fallos en el suministro eléctrico y fallos en la red. El sistema debería estar protegido bajo llave en un lugar seguro. El lugar concreto dependerá de cada caso pero puede ser una habitación, una jaula o un armario. Solo se debería conceder permiso de acceso a esta habitación al personal pertinente. El personal no autorizado podría, voluntaria o involuntariamente, desconectar los cables o intentar eludir los mecanismos de seguridad utilizando un disco de reinicio. Los rociadores de agua pueden causar tanto daño a los componentes electrónicos como el fuego. Los sistemas para la extinción de incendios deben utilizar alternativas poco dañinas como el gas argón o el dióxido de carbono. En determinados lugares, se producen breves cortes de energía eléctrica de manera habitual. En sitios con climatologías extremas o cables enterrados se suelen producir cortes de larga duración. Si el funcionamiento continuo del sistema es un factor importante, se debería utilizar un sistema de alimentación ininterrumpible. Los cortes de suministro de larga duración requieren un generador que alimente el sistema de refrigeración y los equipos.