You are on page 1of 31

Programacin Web

Trabajo de Investigacin de Unidad 2: Desarrollo de Aplicaciones Web Y Unidad 3: Programacin del lado del Servidor

Alumno Vzquez Sierra Osvaldo

Contenido
Unidad 2 Desarrollo de Aplicaciones Web ......................................................................................... 3 2.1 Arquitectura de las Aplicaciones Web ...................................................................................... 3 2.2 Lenguajes de Programacin del Lado del Cliente ..................................................................... 5 2.3 Lenguajes de Programacin del Lado del Servidor ................................................................... 8 2.4 Ambiente para el Desarrollo de Aplicaciones Web ................................................................. 12 2.5 Metodologa para el desarrollo de aplicaciones web ............................................................. 15 2.6 Aspectos de seguridad en desarrollo de aplicaciones web ..................................................... 16 Unidad 3 Programacin del lado del servidor ................................................................................... 18 3.1 Procesamiento del lado del servidor....................................................................................... 18 3.2 Conceptos Bsicos de la Herramienta de Desarrollo .............................................................. 19 3.3 Operadores .............................................................................................................................. 20 3.4 Sentencias................................................................................................................................ 22 3.5 Arreglos ................................................................................................................................... 22 3.6 Funciones y Libreras .............................................................................................................. 22 3.7 Procesado de Formularios ....................................................................................................... 23 3.8 Sesiones ................................................................................................................................... 23 3.10 Conectividad Entre el Servidor Web y el Servidor de Base de Datos................................... 25 3.11 Manejo de archivos ............................................................................................................... 28 3.12 Seguridad............................................................................................................................... 30 Bibliografa .................................................................................................................................... 31

Unidad 2 Desarrollo de Aplicaciones Web


2.1 Arquitectura de las Aplicaciones Web
Arquitectura 2 capas
La arquitectura tradicional de cliente/servidor tambin es conocida como arquitectura de dos capas. Requiere una interfaz de usuario que se instala y corre en una PC o estacin de trabajo y enva solicitudes a un servidor para ejecutar operaciones complejas. Por ejemplo, una estacin de trabajo utilizada como cliente puede correr una aplicacin 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 rpido que en ambientes anteriores, pero no es necesariamente mas rpido que con el nuevo ambiente de tres capas. Las herramientas para el desarrollo con dos capas son robustas y evaluadas. Las tcnicas de prototipo se emplean fcilmente. Las soluciones de dos capas trabajan bien en ambientes no dinmicos estables, pero no se ejecutan bien en organizaciones rpidamente cambiantes.

Desventajas del Sistema de Dos Capas: Los ambientes de dos capas requieren control excesivo de las versiones y demandan esfuerzo de distribucin de la aplicacin cuando se les hacen cambios. Esto se debe al hecho de que la mayora de la aplicacin lgica existe en la estacin de trabajo del cliente. La seguridad del sistema en un diseo de dos capas es compleja y a menudo requiere administracin de las bases de datos; esto es debido al nmero de dispositivos con acceso directo al ambiente de esas bases de datos. Las herramientas del cliente y de la base de datos, utilizadas en diseos de dos capas, constantemente estn cambiando. La dependencia a largo plazo de cualquier herramienta, puede complicar el escalamiento futuro o las implementaciones.

Arquitectura 3 capas
La arquitectura de tres capas es un diseo 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 bsqueda 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 estacin de trabajo, al servidor de capa intermedia, son ms flexibles que en el diseo de dos capas, ya que la estacin solo necesita transferir parmetros 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 cdigo de la capa intermedia puede ser reutilizado por mltiples aplicaciones si esta diseado en formato modular. La separacin de roles en tres capas, hace mas fcil remplazar o modificar una capa sin afectar a los mdulos restantes.

Desventajas de las Arquitecturas de Tres Capas y basadas en Web: Los ambientes de tres capas pueden incrementar el trfico en la red y requiere ms balance de carga u tolerancia a las fallas. Los exploradores actuales no son todos iguales. La estandarizacin 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.

Arquitectura MVC
El patrn MVC es una arquitectura de diseo software para separar los componentes de aplicacin en tres niveles, interfaz de usuario, lgica de control y lgica de negocio. Es una especializacin de un modelo de capas, con la diferencia que se usa para entornos web como patrn por excelencia.

Responsabilidades de Capas en MVC Modelo: Es la capa encargada de encapsular toda la lgica de negocio de nuestra aplicacin. Esta capa se puede subdividir en varias: Lgica de negocio: Contiene clases o varias para constituir lo referente a la capa de aplicacin, se encarga de atender a las peticiones de los controladores y as dar una respuesta acorde con lo recibido. Capa de datos: Se encarga de gestionar toda la interconexin con el SGBD, as mismo, puede contener un gestor ORM para su aprovechamiento mximo y mejor mantenimiento. Solo se comunica con la lgica de negocio. Helpers: Llamados ayudantes apoyan tanto al controlador como a la vista para hacer ms livianas algunas tareas. Controlador: Es el eje central de nuestra arquitectura, encargada de gestionar todas las peticiones, validar los inputs recibidos y dirigir cualquier peticin de cualquier tipo. Solo se comunica con el modelo y responde a travs de vistas. Vista: Es la respuesta de cada controlador y lo que se le presenta al usuario final, se puede comunicar con el controlador, los helpers y el modelo (en algunas ocasiones).

2.2 Lenguajes de Programacin del Lado del Cliente


Javascript
Es un lenguaje de programacin utilizado para crear pequeos programas encargados de realizar acciones dentro del mbito de una pgina web. Caractersticas: El navegador (browser) del cliente es el encargado de interpretar las instrucciones Javascript de modo que el mayor recurso, y tal vez el nico, con que cuenta este lenguaje es el propio navegador. Permite efectos especiales sobre pginas web. Permite ejecutar instrucciones como respuesta a las acciones del usuario (eventos), con lo que podemos crear pginas interactivas con programas como calculadoras, agendas, o tablas de clculo. Es orientado a objetos, con funciones, estructuras de datos complejas.

Pone a disposicin del programador todos los elementos que forman la pgina web, para que ste pueda acceder a ellos y modificarlos dinmicamente. JavaScript no permite dos de las caractersticas clsicas de los lenguajes orientados a objetos (herencia y polimorfismo), pero permite la creacin y manipulacin de objetos sencillos, y la definicin de mtodos y propiedades para dichos objetos. JavaScript soporta el Modelo de Objetos de Documento (DOM, Document Object Model). El DOM es el conjunto de objetos predefinidos que nos permite acceder a todos los elementos de una pgina y a ciertas caractersticas especficas del navegador.

Visual Basic Script


VBScript (abreviatura de Visual Basic Script Edition) es un lenguaje interpretado por el Windows Scripting Host de Microsoft. Caractersticas: Slo compatible con Internet Explorer, basado en Visual Basic de Microsoft; por ello se usa poco. Es parte fundamental de la ejecucin de aplicaciones de servidor programadas en ASP (Active Server Pages), las cuales estn en auge en el perodo 1997-2003. Cuando se emplea en Internet Explorer, VBScript funciona de forma muy similar a JavaScript, procesando cdigo contenido en el documento HTML. VBScript es el lenguaje usado para escribir algunos famosos gusanos de red, como I Love You.

Applets de Java
Un applet Java es un applet escrito en el lenguaje de programacin Java. Los applets de Java pueden ejecutarse en un navegador web utilizando la Java Virtual Machine (JVM), o en el AppletViewer de Sun. Caractersticas: Es un esquema de seguridad que permite que los applets que se ejecutan en el equipo no tengan acceso a partes sensibles (por ej. no pueden escribir

archivos), a menos que uno mismo le d los permisos necesarios en el sistema. Puede incrustarse en un documento HTML, es decir en una pgina web. Cuando un navegador carga una pgina web que contiene un applet, este se descarga en el navegador web y comienza a ejecutarse. Son multiplataforma y puede trabajar en todas las versiones de Java, adems de ser con la mayora de los navegadores web. Puede tener acceso completo a la mquina en la que se est ejecutando, si el usuario lo permite.

ActionScript (Flash)
Adobe ActionScript es el lenguaje de programacin de la Plataforma Adobe Flash. Originalmente desarrollado como una forma para que los desarrolladores programen en forma ms interactiva. La programacin con ActionScript permite mucha ms eficiencia en las aplicaciones de la plataforma Flash para construir animaciones de todo tipo, desde simples a complejas, ricas en datos e interfaces interactivas. Caractersticas: La versin ms extendida actualmente es ACTION 6.0, que signific una mejora en el manejo de programacin orientada a objetos al ajustarse mejor al estndar ECMA-262 y es utilizada en las ltimas versiones de Adobe Flash y Flex y en anteriores versiones de Flex. Flash est compuesto por objetos, con su respectiva ruta dentro del swf. Cada uno de estos en ActionScript pertenece a una clase (MovieClip, botones, Vectores (Arrays), etc.), que contiene Propiedades y Mtodos o Funciones

Principales funciones de ActionScript 3.0


Una nueva mquina virtual ActionScript, denominada AVM2, que utiliza un nuevo conjunto de instrucciones de cdigo de bytes y proporciona importantes mejoras de rendimiento. Una base de cdigo de compilador ms moderna, que se ajusta mejor al estndar ECMAScript (ECMA 262) y que realiza mejores optimizaciones que las versiones anteriores del compilador. Una interfaz de programacin de aplicaciones (API) ampliada y mejorada.

Un ncleo del lenguaje basado en el prximo borrador de especificacin del lenguaje ECMAScript (ECMA-262) edicin 4. Una API XML basada en la especificacin de ECMAScript para XML (E4X) (ECMA-357 edicin 2). E4X es una extensin del lenguaje ECMAScript que aade XML como un tipo de datos nativo del lenguaje. Un modelo de eventos basado en la especificacin de eventos DOM (modelo de objetos de documento) de nivel 3.

2.3 Lenguajes de Programacin del Lado del Servidor


Existe una multitud de lenguajes concebidos o no para Internet. Cada uno de ellos explota ms a fondo ciertas caractersticas que lo hacen ms o menos tiles para desarrollar distintas aplicaciones. Un lenguaje del lado del servidor es aquel que se ejecuta en el servidor web, justo antes de que se enve la pgina a travs de Internet al cliente. Las pginas que se ejecutan en el servidor pueden realizar accesos a bases de datos, conexiones en red, y otras tareas para crear la pgina final que ver el cliente. Los lenguajes de lado servidor ms ampliamente utilizados para el desarrollo de pginas dinmicas son el ASP, JSP, PERL y PHP.

ASP.NET (Active Server Pages)


Lenguaje comercializado por Microsoft, y usado por programadores para desarrollar entre otras funciones, sitios web. ASP.NET es el sucesor de la tecnologa ASP, fue lanzada al mercado mediante una estrategia de mercado denominada .NET. Se desarrollado para resolver las limitantes que brindaba su antecesor ASP. Para el desarrollo de ASP.NET se puede utilizar C#, VB.NET o J#. Los archivos cuentan con la extensin (aspx). Para su funcionamiento de las pginas se necesita tener instalado IIS con el Framework .Net. Microsft Windows 2003 incluye este framework, solo se necesitar instalarlo en versiones anteriores. El lenguaje ASP consiste en una serie de clases .NET utilizadas para crear aplicaciones Web, tanto del lado cliente (Web Form) como del lado servidor (Web Service). La integracin de nativa .NET Framework con el sistema operativo

Windows Server 2003 hace que su ejecucin sea ms estable y rpida que otros lenguajes de programacin. Ventajas: Completamente orientado a objetos. Controles de usuario y personalizados. Divisin entre la capa de aplicacin o diseo y el cdigo. Facilita el mantenimiento de grandes aplicaciones. Incremento de velocidad de respuesta del servidor. Mayor velocidad. Mayor seguridad.

Desventajas: Mayor consumo de recursos. Tecnologa propietaria. Hospedaje de sitios web costosos.

JSP
Es un lenguaje para la creacin de sitios web dinmicos, acrnimo de Java Server Pages. Est orientado a desarrollar pginas web en Java. JSP es un lenguaje multiplataforma. JSP fue desarrollado por Sun Microsystems. Comparte ventajas similares a las de ASP.NET, desarrollado para la creacin de aplicaciones web potentes. Posee un motor de pginas basado en los servlets de Java. Para su funcionamiento se necesita tener instalado un servidor Tomcat. Caractersticas: Cdigo separado de la lgica del programa. Las pginas son compiladas en la primera peticin. Permite separar la parte dinmica de la esttica en las pginas web. Los archivos se encuentran con la extensin (jsp). El cdigo JSP puede ser incrustado en cdigo HTML.

Los elementos que pueden ser insertados en las pginas JSP son los siguientes: Cdigo: se puede incrustar cdigo Java.

Directivas: permite controlar parmetros del servlet. Acciones: permite alterar el flujo normal de ejecucin de una pgina.

Ventajas: Ejecucin rpida del servlets. Crear pginas del lado del servidor. Multiplataforma. Cdigo bien estructurado. Integridad con los mdulos de Java. La parte dinmica est escrita en Java.

Desventajas: Complejidad de aprendizaje.

PERL (Practical Extraction and Report Language)


Es un lenguaje de programacin desarrollado por Larry Wall (lwall at netlabs.com) inspirado en otras herramientas de UNIX como son: sed, grep, awk, c-shell, para la administracin de tareas propias de sistemas UNIX. No establece ninguna filosofa de programacin concreta. No se puede decir que sea orientado a objetos, modular o estructurado aunque soporta directamente todos estos paradigmas; su punto fuerte son las labores de procesamiento de textos y archivos. Lenguaje de programacin basado en scripts portable a casi cualquier plataforma. Es muy utilizado para escribir CGIs. Uno de sus elementos ms potentes son las expresiones regulares, que a partir de su versin en Perl han sido adoptadas por otros lenguajes y plataformas como .NET o Javascript. Ventajas: Es un buen lenguaje pegamento. Se pueden juntar varios programas de una forma sencilla para alcanzar una meta determinada. Los usuarios de Windows agradecern esta propiedad ya que normalmente adolecen de un buen lenguaje tipo script. Es relativamente rpido para un lenguaje tipo script.

10

Est disponible en mltiples plataformas y sistemas operativos (UNIX, Linux y Windows). Un programa que se escriba teniendo en cuenta la compatibilidad puede ser escrito en una plataforma y ejecutado en otra. El desarrollo de aplicaciones es muy rpido. Hay una coleccin enorme de mdulos que pueden ser incorporados a cualquier script de Perl. Estn disponibles en el CPAN (Comprehensive Perl Archive Network). En particular existe una extensin para clculo numrico denominada PDL. Perl es gratuito. Mucho ms que eso, es Software Libre. Esto quiere decir que el cdigo fuente est disponible para que cualquiera lo pueda ver o modificar, y lo que es ms importante, siempre lo estar. Aunque nunca pretendas cambiar el cdigo, es importante disponer de la posibilidad de hacerlo, ya que siempre se podr contratar a una tercera persona para que lo modifique en el caso de que haya un error, y debera ser posible solucionarlo. Le otorga al programador mucha libertad para que haga el programa como quiera. Tal como dice el eslogan de Perl Hay ms de una forma de hacerlo.

PHP
PHP es el acrnimo de Hipertext Preprocesor. Es un lenguaje de programacin del lado del servidor gratuito e independiente de plataforma, rpido, con una gran librera de funciones y mucha documentacin. Fue creado originalmente en 1994 por Rasmus Lerdorf, pero como PHP est desarrollado en poltica de cdigo abierto, a lo largo de su historia ha tenido muchas contribuciones de otros desarrolladores. El cliente solamente recibe una pgina con el cdigo HTML resultante de la ejecucin de la PHP. Como la pgina resultante contiene nicamente cdigo HTML, es compatible con todos los navegadores. Ventajas: Muy fcil de aprender. Se caracteriza por ser un lenguaje muy rpido. Soporta en cierta medida la orientacin a objeto. Clases y herencia. Es un lenguaje multiplataforma: Linux, Windows, entre otros. Capacidad de conexin con la mayora de los manejadores de base de datos: MysSQL, PostgreSQL, Oracle, MS SQL Server, entre otras. Capacidad de expandir su potencial utilizando mdulos.

11

Posee documentacin en su pgina oficial la cual incluye descripcin y ejemplos de cada una de sus funciones. Es libre, por lo que se presenta como una alternativa de fcil acceso para todos. Incluye gran cantidad de funciones. No requiere definicin de tipos de variables ni manejo detallado del bajo nivel.

Desventajas: Todo el trabajo lo realiza el servidor y no delega al cliente. Por tanto puede ser ms ineficiente a medida que las solicitudes aumenten de nmero. La legibilidad del cdigo puede verse afectada al mezclar sentencias HTML y PHP. La programacin orientada a objetos es an muy deficiente para aplicaciones grandes. Dificulta la modularizacin. Dificulta la organizacin por capas de la aplicacin.

Seguridad: PHP es un poderoso lenguaje e intrprete, ya sea incluido como parte de un servidor web en forma de mdulo o ejecutado como un binario CGI separado, es capaz de acceder a archivos, ejecutar comandos y abrir conexiones de red en el servidor. Estas propiedades hacen que cualquier cosa que sea ejecutada en un servidor web sea insegura por naturaleza. PHP est diseado especficamente para ser un lenguaje ms seguro para escribir programas CGI que Perl o C, y con la seleccin correcta de opciones de configuracin en tiempos de compilacin y ejecucin, y siguiendo algunas prcticas correctas de programacin.

2.4 Ambiente 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 especficos para lenguajes del lado del servidor. Por ejemplo, Visual Studio solo soporta ASP.NET del lado del servidor. Existen IDEs libres y gratuitos de buena calidad.

12

Un entorno de desarrollo integrado (IDE- Integrated Development Environment) tambin conocido como entorno de diseo integrado o el medio ambiente integrado de depuracin es una aplicacin de software que ofrece servicios integrales a los programadores de computadoras para el desarrollo de software. Un IDE normalmente se compone de: Un editor de texto. Un compilador. Un intrprete. Herramientas de automatizacin. Un depurador. Posibilidad de ofrecer un sistema de control de versiones. Factibilidad para ayudar en la construccin de interfaces grficas de usuario.

Microsoft Visual Studio


Es un entorno de desarrollo integrado para sistemas operativos Windows. Soporta varios lenguajes de programacin: Visual C++, Visual C#, Visual J#, ASP.NET y Visual Basic .NET,

Microsoft Visual Web Developer


Es un entorno de desarrollo liviano pensado para la utilizacin y aprendizaje. Est formado por un conjunto de herramientas y utilidades para la creacin de sitios Web y sus aplicaciones Web con ASP.NET 2.0. Caractersticas: Diseo de pginas Web Caractersticas del diseo de pginas Edicin de cdigo Desarrollo para sitios alojados Depuracin Controles Acceso a datos

13

Netbeans
NetBeans es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programacin Java. NetBeans IDE El IDE NetBeans es un entorno de desarrollo integrado - una herramienta para programadores pensada para escribir, compilar, depurar y ejecutar programas. Est escrito en Java - pero puede servir para cualquier otro lenguaje de programacin NetBeans Enterprise Pack Provee soporte para la creacin de aplicaciones orientadas a servicios (SOA), incluyendo herramientas de esquemas XML, un editor WSDL, y un editor BPEL para web services. PHP NetBeans permite crear aplicaciones Web con PHP 5. Soporte para Symfony un gran framework MVC escrito en php. soporte para AJAX, soporte para JSP cada vez ms desarrolladores de aplicaciones LAMP o WAMP, estn utilizando NetBeans como IDE.

Eclipse
Eclipse es un IDE (Entorno de Desarrollo Integrado) tan potente como popular que incorpora un sin fin de utilidades para simplificar la labor de los programadores.

JBUILDER
JBuilder, un IDE (entorno de desarrollo integrado) Java de Borland. Es un software creado en 1995. La versin 2006 (Borland JBuilder 2006) tiene 3 ediciones: Enterprise (para aplicaciones J2EE, Web Services y Struts), Developer (para el completo desarrollo de aplicaciones Java) y Foundation (con capacidades bsicas para iniciarse en el desarrollo de aplicaciones java y de momento es de libre uso).

14

La versin JBuilder 2007 est basada en Eclipse. Tiene tambin 3 ediciones: Enterprise (la ms completa), y Professional. Esta disponible para Windows, Linux y MacOS X La ltima versin es JBuilder 2008, tambin disponible en 3 versiones, Enterprise, Professional y Turbo.

Dreamweaver
Es en una potente y flexible herramienta de desarrollo que inclute numerosas herramientas para facilitarnos el desarrollo de aplicaciones web. Dreamweaver permite trabajar con los siguientes modelos de servidor: ASP JavaScript ASP VBScript ASP.NET C# ASP.NET VB COLDFUSION JSP PHP MySQL

WORDPRESS WordPress es un sistema de gestin de contenido enfocado a la creacin de blogs (sitios web peridicamente actualizados). Desarrollado en PHP y MySQL, bajo licencia GPL y cdigo modificable, tiene como fundador a Matt Mullenweg. WordPress fue creado a partir del desaparecido b2/cafelog y se ha convertido junto a Movable Type en el CMS ms popular de la blogosfera. Las causas de su enorme crecimiento son, entre otras, su licencia, su facilidad de uso y sus caractersticas como gestor de contenidos.

2.5 Metodologa para el desarrollo de aplicaciones web


Los principales problemas que nos encontramos es la falta de fiabilidad, seguridad, escalabilidad, mantenimiento, integracin y la alta dependencia para su desarrollo e implantacin junto con la falta de estndares.

15

Lo que deseamos es controlar el caos que han provocado en el pasado procesos creativos de desarrollo con el fin de proporcionar un proceso sistemtico orientado a la mejora de la calidad de la aplicacin final. En esta nueva disciplina se parte de la base de que las necesidades de evolucin, mantenimiento, la adaptacin a nuevos dispositivos de acceso y la migracin a nuevas plataformas y entornos de desarrollo deben dirigir el proceso del ciclo de vida. Para todo esto se han desarrollado metodologas que permiten estructurar comunicar, entender, simplificar y formalizar tanto el dominio como las decisiones de diseo, as como disponer de documentacin detallada para posibles cambios del software. Las distintas metodologas se pueden dividir en tres generaciones en base a su sofisticacin, estas son: Primera Generacin: (Principios de los 90) Se sientan las bases de la ingeniera Web, en los que se incluyen conceptos como construccin de navegacin, separacin entre estructuras y el contenido durante el ciclo de desarrollo. Segunda Generacin: (Segunda mitad de los 90) Se refinan los primeros modelos y se aaden los soportes de funcionalidad bsica y se llevan a cabo los primeros esbozos de proceso donde se delimitan los modelos conceptual, lgico y fsico. Tercera generacin: (A partir del 2000): Se lleva a cabo la profundizacin en el soporte para la funcionalidad, enfatizacin de la figura del usuario en los mtodos, y se avanza hacia la estandarizacin de notaciones, procesos y lenguajes de especificacin.

2.6 Aspectos de seguridad en desarrollo de aplicaciones web


La seguridad, en informtica como en otras reas, se basa en la proteccin de activos. Estos activos pueden ser elementos tan tangibles como un servidor o una base de datos, o pueden ser la reputacin de una empresa. Generalmente podemos evaluar la seguridad de un activo en base a tres aspectos principales que no necesitan explicacin: Integridad Disponibilidad Confidencialidad

Estos tres aspectos a su vez dependen de otros tres elementos principales que engloban prcticamente todos los distintos controles que se pueden establecer en un sistema informtico:

16

Autorizacin No solo es necesario saber quienes acceden a nuestros activos, tambin es necesario establecer que es lo que pueden hacer con ellos. Un nivel de autorizacin dado determina que tipo de operaciones o transacciones puede efectuar un cliente dado sobre un recurso dado.

Autenticacin Los clientes de nuestras aplicaciones o servicios deben ser identificados de forma nica, sean usuarios finales, otros servicios o computadoras externas.

Registro y auditoria Luego de efectuada una operacin, es importante que esta sea registrada adecuadamente, en particular es esencial si queremos evitar el repudio de transacciones efectuada por un cliente.

La seguridad web tiene 3 etapas primarias: Seguridad de la computadora del usuario. Los usuarios deben contar con navegadores y plataformas seguras, libres de virus y vulnerabilidades. Tambin debe garantizarse la privacidad de los datos del usuario. Seguridad del servidor Web y de los datos almacenados ah. Se debe garantizar la operacin continua del servidor, que los datos no sean modificados sin autorizacin (integridad) y que la informacin slo sea distribuida a las personas autorizadas (control de acceso). Seguridad de la informacin que viaja entre el servidor Web y el usuario. Garantizar que la informacin en trnsito no sea leda (confidencialidad), modificada o destruida por terceros. Tambin es importante asegurar que el enlace entre cliente y servidor no pueda interrumpirse fcilmente (disponibilidad).

17

Virtual Private Network (VPN)


Es una tecnologa de red que permite una extensin de la red local sobre una red pblica o no controlada, como por ejemplo Internet. Para hacerlo posible de manera segura es necesario proporcionar los medios para garantizar la autentificacin, integridad de toda la comunicacin: Autentificacin y autorizacin: Quin est del otro lado? Usuario/equipo y qu nivel de acceso debe tener. Integridad: de que los datos enviados no han sido alterados. Para ello se utiliza funciones de Hash. Los algoritmos de hash ms comunes son los Message Digest (MD2 y MD5) y el Secure Hash Algorithm (SHA). Confidencialidad: Dado que slo puede ser interpretada por los destinatarios de la misma. Se hace uso de algoritmos de cifrado como Data Encryption Standard (DES), Triple DES (3DES) y Advanced Encryption Standard (AES). No repudio: es decir, un mensaje tiene que ir firmado, y el que lo firma no puede negar que el mensaje lo envi l o ella.

Unidad 3 Programacin del lado del servidor


3.1 Procesamiento del lado del servidor
Todo lo que suceda dentro del servidor es llamado procesamiento del lado del servidor, o server-side processing. Cuando tu aplicacin necesita interactuar con el servidor (por ejemplo, para cargar o guardar datos), sta realiza una peticin del lado del cliente (clientside request) desde el navegador, a travs de la red usando invocaciones remotas a mtodos (remote procedure call, RPC). Mientras se est procesando una llamada RPC, tu servidor est ejecutando cdigo del lado del servidor. Los primeros servidores web permitan visualizar exclusivamente informacin esttica. Esto represent bien pronto una limitacin; sobre todo desde el momento en el que la actividad publicitaria y comercial comenz a concentrarse tambin en la red Internet. La unificacin de tareas, que inicialmente pareca una ventaja para el desarrollo de pginas web, se convirti en realidad en una fuerte limitacin para el desarrollo de aplicaciones web.

18

La programacin del lado del servidor es un elemento agregado muy importante en el diseo o construccin de sitios Web, ya que permite de una u otra forma el manejo de datos de forma dinmica. Los primeros servidores Web que permitan construir pginas dinmicas utilizaban CGI. CGI es aun muy comn en la actualidad y los servicios de IIS de Microsoft pueden usar CGI al igual que las pginas ASP. CGI es una tecnologa que nos permite invocar programas compilados o guiones en el servidor Web. CGI se ve a menudo en los servidores Web de sistemas UNIX, y muchos de los programas CGI son guiones Perl.

3.2 Conceptos Bsicos de la Herramienta de Desarrollo


Las herramientas de desarrollo son aquellas o aplicaciones que tengan cierta importancia en el desarrollo de un programa. Pueden ser de importancia vital (como un ensamblador, un compilador o un editor) o de importancia secundaria, como una IDE (Interfaz de Desarrollo Estructurada), las herramientas definidas son las propias del ciclo de generacin de un programa ejecutable:

El editor emacs, que cubre la fase de escritura del cdigo fuente. El compilador/enlazador gcc, que permite obtener ejecutables a partir del cdigo fuente. La herramienta make, que facilita (y agiliza) la generacin de ejecutables cuando intervienen varios ficheros fuente.

Una de las herramientas que permite crear pginas web, es php, un lenguaje interpretado de alto nivel embebido en pginas HTML y ejecutado en el servidor, no es un lenguaje de marcas como podra ser HTML, XML o WML. El resultado es normalmente una pgina HTML pero igualmente podra ser una pagina WML. La caracterstica ms potente y destacable es su soporte para una gran cantidad de bases de datos. Hay cuatro formas de salir de HTML y entrar en el "modo de cdigo PHP":

<? ?> <? ?> <script language="php"> </script> <% %>

19

3.3 Operadores
Son expresiones que permiten manipular los datos recolectados, cada uno de los datos que se asigna a un operador se llama operando. PHP dispone de una gran cantidad de operadores se pueden organizar en las siguientes categoras:

Operadores de Aritmtica: + Suma dos valores. $a + $b - Resta dos valores (o pasa a negativo un valor). $a - $b * Multiplica dos valores. $a * $b / Divide dos valores $a / $b % Resto de dividir dos valores $a % $b ++ Incremento en una unidad $a++ -- Decremento en una unidad $a--

Operadores de Asignacin: = Asigna a la parte derecha el valor izquierdo. $a = $b (Asigna a $a el contenido de $b). += Realiza la suma de la derecha con la izquierda, lo asigna a la derecha. $a += $b (Asigna a $a la suma de $b + $a). -= Realiza la resta de la derecha con la izquierda y la asigna a la derecha. $a -= $b (Asigna a $a la resta de $a - $b). *= Realiza la multiplicacin de la derecha con la izquierda y la asigna a la derecha. $a *= $b (Asigna a $a la multiplicacin de $a por $b). /= Realiza la divisin de la derecha con la izquierda y la asigna a la derecha $a /= $b (Asigna a $a la divisin de $a entre $b). %= Se obtiene el resto y se asigna. .= Concatena el valor de la izquierda con la derecha y lo asigna a la derecha $a .= $b (Asigna a $a la concatenacin de $a seguida por $b).

20

Operadores de Lgica: ! Operador NO o negacin. Si era true pasa a false y viceversa !$a AND Operador Y, si ambos son se cumplen vale verdadero, $a AND $b OR Operador O, vale verdadero si alguno de los dos se cumple, $a OR $b XOR Verdadero si alguno de los dos es true pero nunca ambos, $a XOR $b && True si ambos lo son, $a && $b || True si alguno lo es, $a || $b

Operadores de Cadena: El nico operador de cadenas que existen es el de concatenacin, el punto. $a = "Hola "; $b = $a . "Mundo"; // Ahora $b contiene "Hola Mundo" $a = "Mundo"; echo = 'Hola $a'; //Esto escribir "Hola $a

Operadores condicionales: == Comprueba si dos nmeros son iguales $a == $b != Comprueba si dos nmeros son distintos $a != $b > Mayor que, devuelve true en caso afirmativo $a > $b < Menor que, devuelve true en caso afirmativo $a < $b >= Mayor o igual $a >= $b <= Menor o igual $a <= $b

21

3.4 Sentencias
En programacin, una sentencia es una lnea de cdigo en algn lenguaje de programacin. Un programa est constituido por mltiples sentencias de programacin, lo que es llamado cdigo fuente. Las sentencias de programacin suelen tener algn carcter que determina su final, por lo general es un punto y coma (;) o un punto final (.), y algunas estn separadas simplemente por ENTER (retorno de carro). Esto depende del lenguaje de programacin que se est empleando. Estructuras de control PHP al igual que la mayora de lenguajes de programacin necesita de herramientas que permitan tomar decisiones lgicas al servidor. Como las sentencias if, else, while, do while, for, switch. La tpica sentencia en PHP es una asignacin y termina en punto y coma: $saludos = Bienvenidos a PHP;

3.5 Arreglos
Es una coleccin ordenada de elementos abarcando los tipos de datos antes vistos que se identifican por su posicin, indexando el arreglo. La posicin del primer elemento siempre es cero. El tamao de un arreglo se puede consultar mediante el atributo length. Si el arreglo no ha sido inicializado sus elementos estn: indefinidos (undefined) vacos (null). Ejemplo. Definir un arreglo (a.length==0) // Genera un arreglo vaco var a = new Array(); var b = new Array(2.5, false, 6, "Hola"); // Genera un arreglo con 4 elementos de distinto tipo

3.6 Funciones y Libreras


En toda aplicacin ms o menos compleja hay bloques de acciones que se realizan ms de una vez y PHP no es la excepcin, para no tener que escribir estas acciones repetidamente, todos los lenguajes de un nivel ms o menos alto incorporan funciones.

22

Para declarar una funcin se utiliza la expresin function seguida del nombre que se desea asignar, a continuacin y entre parntesis, los argumentos que recibe la funcin y finalmente y entre corchetes el cdigo que sta debe ejecutar.

3.7 Procesado de Formularios


Los Formularios no forman parte de PHP, sino del lenguaje estndar de Internet, HTML, El procesamiento de los datos introducidos en el formulario (cliente) se debe hacer utilizando un programa aparte (o bien enviando dichos datos por medio del correo electrnico), localizado en un servidor remoto (indicado en una URL en un parmetro de la etiqueta) que har algo con dicha informacin (meterla en una BD, modificarla y devolverla al cliente).

3.8 Sesiones
Las sesiones se pueden implementar tanto a nivel del servidor como de la aplicacin, con o sin bases de datos y con o sin cookies (a veces se emplean URLs codificadas y mtodos de reinterpretacin de URLs en el lado del servidor). Generalmente una web se compone de una serie de pginas entre las que existe alguna relacin. Un ejemplo claro es una pgina en la cual es necesario estar registrado para poder acceder a ellas ya que en funcin de la categora del usuario nos permitir acceder a unas secciones o otras. En estas aplicaciones ser necesario ir comprobando los permisos de usuario y para ello se usa un elemento en PHP denominado "sesin". Una sesin se inicia cuando un usuario entra en la aplicacin web y finaliza cuando el usuario abandona la aplicacin. El soporte para sesiones de PHP permite inicializar fcilmente una sesin utilizando session_start y gracias al vector superglobal $_SESSION, se puede trabajar con sesiones como si de cualquier otro vector se tratara: <?php // Inicializamos sesion session_start(); // Guardamos una variable $_SESSION['nombre'] = 'Diego Garcia'; ?> Para el problema de diferenciar a varios usuarios existe una solucin muy bsica que consiste en un identificador de sesin diferente en cada caso. El cual debe ser enviado de una pagina a otra para mantener la sesin activa y tambin es necesario pasar el identificador de sesin en los formularios como un campo HIDDEN.

23

<a href="pagina.php?<? =SID ?>">Entrar</a> //hipervinculo <input type="hidden" name="session_name()" value="SID">

Funciones de gestin de sesiones session_start(); Si es la primera solicitud genera un identificador de sesin aleatorio cuyo nombre ser sess_IDsesin; si es otra solicitud continua la sesin iniciada anteriormente. session_destroy(); Elimina todos los datos asociados con una sesin, borra el archivo en el servidor pero no borra la cookie. session_register(nombre); Recibe como parmetro una serie de nombres de variable globales y los registra como variables de sesin en el fichero del servidor. session_unregister(nombre); Eliminamos la variable global introducida y se elimina el contenido de esta variable en el fichero del servidor.Sin pasar el parmetro nombre eliminaremos todas las variables de la sesin. session_is_registered(nombre); Devuelve true en caso de que en la sesin se encuentre registrada una variable con dicho nombre. session_unset(); Dejamos sin ningn valor asignado a todas las variables de la sesin. session_id([nombre]); Si no le proporcionamos ningn parmetro nos da el identificador de sesin; si le proporcionamos el parmetro nombre cambia el valor del identificador por el parmetro nombre. session_name([nombre]); Si se invoca sin parmetro devuelve el nombre de la variable interna que tiene el id de sesiones; si se pasa parmetro cambia el nombre de la sesin. session_get_cookie_params(); Permite definir nuevos valores para los parmetros de configuracin de las cookies. Para que el cambio sea permanente hay que invocar el cambio en todos los documentos. session_cache_limiter([cache_limiter]); Si se le proporciona valor modifica el valor por defecto en cambio sino se muestra el cach que tiene por defecto. session_encode(); Devuelve una cadena con la informacin de una sesin, despus de usar esta funcin la informacin de la sesin queda actualizada.

24

session_decode(cadena); Descodifica la cadena que recibe como parmetro y que contiene la informacin de sesin, despus de usar esta funcin se actualiza la informacin de sesin. session_save_path([path]); Devuelve el camino al directorio donde se guardan los ficheros asociados a la sesin. El efecto solo dura en el script actual. session_module_name([modulo]); Devuelve el nombre del modulo que se usa para realizar la gestin de sesiones. Cuando se invoca un parmetro se usa como nuevo gestor de sesiones. session_set_save_handler(open,close,read,write,destroy,gc); Permite definir su propio manejador para almacenar la informacin asociada con una sesin. De esta forma los datos pueden ser metidos en una BD en vez de en un fichero. Tenemos que pasarle como parmetro toda la informacin necesaria para crear y destruir sesiones.

3.10 Conectividad Entre el Servidor Web y el Servidor de Base de Datos


Para conectar al servidor de bases de datos en PHP, se debe conocer la direccin, el nombre de usuario y la contrasea. La direccin normalmente ser localhost, ya que la ejecutaremos desde el mismo servidor en la que esta alojada. En mySQL se debe usar una funcin llamada mysql_connect(), a esta funcin se le deben entregar tres parmetros. $link = mysql_connect("localhost","usuario","password"); $link = variable que almacenara el resultado que retorne la funcin. localhost = nombre del servidor en donde se encuentra la base de datos. usuario y password = usuario, previamente registrado y contrasea.

Ejemplo 3.2 conectar PHP a una base de datos <html> < head> < title>Ejemplo de PHP</title> < /head> < body> < ?php function Conectarse()

25

{ if (!($link=mysql_connect("localhost", "usuario","Password"))) { echo "Error conectando a la base de datos."; exit(); } if (!mysql_select_db("base_datos",$link)) { echo "Error seleccionando la BD."; exit(); } return $link; } $link=Conectarse(); echo "Conexin exitosa.<br>"; mysql_close($link); ?> < /body> < /html>

Consultas Una vez hecha la conexin con el servidor de bases de datos, ya se pueden realizar consultas a las tablas de la base de datos, en PHP y MySQL existen cuatro funciones para esto. Select: busca informacin en la base de datos. Insert: ingresa informacin para almacenarla y luego ser obtenida mediante una consulta select. Update: actualiza la informacin guardada. Delete: obviamente borra la informacin.

Ordenar las consultas Para organizar las consultas se utiliza la instruccin ORDER BY y luego se indica el orden DESC (descendiente) o ASC (ascendiente). $query = "SELECT idNoticia,titulo,cuerpo,estado FROM noticias ORDER BY idNoticia DESC";

26

Filtrar las consultas Si se desea hacer una consulta pero condicionando los datos a mostrar se usa la instruccin WHERE y se indica el campo, por ejemplo mostrar las noticias cuyo estado sea publicado: $query = "SELECT idNoticia,titulo,cuerpo,estado FROM noticias WHERE estado = publicado ORDER BY idNoticia DESC";

Insertar Para insertar informacin en la base de datos se utiliza la instruccin INSERT INTO, la sintaxis es la siguiente: INSERT INTO nombre_tabla (campo1,campo2) values (valoresCampo1,valoresCampo2) //Usndola con variables //primero se hace la conexin a la BD y despus la insercin: $query = "INSERT INTO noticias (nombre,cuerpo,estado) values (titulo de noticia , hoy sucedi una noticia , publicada)"; $response = mysql_query($query, $link);

Actualizar Para modificar los datos en una tabla se utiliza la instruccin UPDATE $query = "UPDATE nombre_tabla set campo1 = valor1, campo2 = valor2 WHERE primaryKey = valorPrimaryKey "; $response = mysql_query($query, $link); Con UPDATE se indica que la base de datos se va a actualizar, set es para indicar los campos que se van a modificar y con qu valores. Es muy importante tambin la clusula WHERE para indicar que se est modificando una fila nicamente, si se requiere modificar varias filas con el mismo valor sta clusula se omite, y de esta forma se editara toda la tabla.

Borrar Para eliminar informacin en una tabla se usa DELETE, la sintaxis es similar a la de la instruccin UPDATE.

27

//borrar registros $query = "DELETE FROM nombre_tabla WHERE primaryKey = valorPrimaryKey LIMIT 1"; $response = mysql_query($query, $link); //borrar tablas $query= "DROP TABLE nombre_tabla"; $response = mysql_query($query, $link); //borrar columnas de una tabla $query= "ALTER TABLE nombre_tabla DROP COLUMN campo1"; $response = mysql_query($query, $link);

3.11 Manejo de archivos


Existe una gran variedad de programas o software en el mundo de los computadores y la informtica, cada programa genera una extensin o tipo de archivo diferente, por tanto es indispensable conocer (por lo menos) cuales son los mas utilizados y que de hecho se convierten prcticamente en un estndar, no solo en Internet sino tambin en los computadores.

Funciones para la gestin de archivos en PHP: Cambio, creacin y borrado de directorios chdir(ruta_al_directorio); Permite cambiar el directorio activo a la ruta establecida como parmetro. mkdir(ruta_al_directorio,permisos); Esta funcin crea un nuevo directorio en la ruta que hemos indicado, el segundo parmetro debe ser un numero octal y es por el que vienen determinados los permisos. rmdir(ruta_directorio); Borra el directorio pasado como parmetro. Procesamiento de los elementos de un directorio opendir(ruta); abre el directorio de la ruta especificada. Una vez se ha ejecutado opendir() se pueden realizar tres operaciones:

28

readdir(manejador); devuelve una cadena con el nombre del siguiente elemento del directorio, ya sea subdirectorio o fichero. rewinddir(manejador); procesa un directorio y sita el puntero interno en el primer directorio. closedir(manejador); finaliza el tratamiento de entradas de directorio. $directorio=dir(ruta_directorio); Este objeto cuenta con 3 mtodos y 2 propiedades(las propiedades slo de consulta por lo que no pueden ser modificadas. Los mtodos empleados son read(),rewind() y close() copy(fichero_origen,fichero_destino); Realiza una copia del fichero. unlink(nombre_fichero); Elimina el fichero. rename(nombre_antiguo,nombre_nuevo); Renombra el fichero pasado como parmetro.

Atributos de ficheros y directorios file_exists(elemento); Comprueba que el elemento pasado como parmetro exista. filesize(nombre_fichero); Informa el tamao del fichero en bytes. fileatime(fichero); informa el ultimo acceso al fichero. filemtime(fichero); informa la ultima modificacin del fichero. filectime(fichero); informa el ltimo cambio al fichero. filetype(fichero); devuelve el tipo de elemento que estamos tratando. Los resultados posibles que puede devolver son: block Dispositivo de bloques char Caracteres dir Directorio fifo FIFO file Fichero link Enlace unknown Desconocido

29

Chmod(elemento_directorio,permisos); Recibe como parmetro el elemento y los permisos que deseamos otorgarles.

Funciones de gestin de archivos copy Copia un archivo copy($origen,$destino). rename Cambia el nombre del archivo de $antes a $despues rename($antes,$despues). unlink Borra el archivo unlink($archivo). Funciones para la lectura de archivos fopen Abre un archivo y le asigna un identificador id. Veremos el modo ms adelante $id = Fopen($archivo, $modo). fgets Lee una lnea de un archivo hasta un numero mximo de caracteres fgets($id,$max). fwrite Escribe una cadena dentro del archivo fwrite($id, $cadena). fseek Avanza o retrocede el puntero del archivo un cierto numero de posiciones fseek($id,$posiciones). feof Comprueba si el puntero que lee el archivo ha llegado al final feof($id). fpassthru lee completamente el archivo y lo muestra fpassthru($id). fclose Cierra el archivo abierto previamente fclose($id).

3.12 Seguridad
PHP es un poderoso lenguaje e intrprete, ya sea incluido como parte de un servidor web en forma de mdulo o ejecutado como un binario CGI separado, es capaz de acceder a archivos, ejecutar comandos y abrir conexiones de red en el servidor. Estas propiedades hacen que cualquier cosa que sea ejecutada en un servidor web sea insegura por naturaleza Por eso PHP es un lenguaje ms seguro para escribir programas CGI que Perl o C, y con la seleccin correcta de opciones de configuracin en tiempos de compilacin y ejecucin, siguiendo algunas prcticas correctas de programacin.

30

Bibliografa

http://pw-itvh.blogspot.mx/2011/12/unidad-2-desarrollo-de-aplicaciones-web.html#uds-searchresults http://pw-itvh.blogspot.mx/2011/12/unidad-3.html

31