PROGRAMACIÓN DE INTERFACES WEB II
ALUMNO: EDGAR JAVIER URQUIJO RASCÓN PROFESOR DR. BENITO FRANCO URREA UNIDEP CENTRO
Índice
I.
Portada.
II.
Perfil descriptivo.
III.
Información institucional.
IV.
Introducción.
V.
Temas de investigación. 1.-Servicios WEB. 2.- Arquitectura básica de protocolos de Servicios Web. 3. Protocolo SOAP: Intercambio de mensajes. 4. Estructura de los mensajes SOAP 5. Protocolo WSDL: Descripción de servicios. 6. Usos de WDSL. 7. Elementos de una especificación WSDL. 8. Protocolo UDDI: Publicación de servicios. 9. Debilidades de los Web Services. 10. Vulnerabilidades y ataques. 11. Desafíos a la Seguridad de los Web Services. 12. Prevención y Mitigación.
VI.
Proyecto final.
VII.
Tareas.
VIII.
Conclusión.
II.
Perfil descriptivo.
UNIVERSIDAD DEL DESARROLLO PROFESIONAL
Perfil Descriptivo de Clase Materia:
PROGRAMACIÓN DE INTERFASES WEB II
Ciclo:
2014 -2
Maestro:
Dr. José Benito Franco Urrea
Horario:
13:00-15:00
Objetivo Curso:
del
Bibliografía:
El alumno Adquirirá las habilidades para integrar los servicios de Web a la operación de una tienda virtual, elaborando una tienda virtual que le permita comercializar productos de manera electrónica, utilizando la Arquitectura orientada a servicios. TIPO
TITULO
Libro
Java 2 Manual de Joyanes McGraw-Hill Programación Aguilar, Luis
Libro
Web Standards Programmer's Reference: HTML, CSS, JavaScript, Perl, Python, and PHP Perl, CGI y Java Script
Schafer, Steven M.
Wrox
2005
Anaya Multimedia
Anaya Multimedia
2001
Libro
Java and XML
McLaughlin, O'Reilly Brett y Loukides, Mike
Libro
Perl, CGI, JavaScript Complete
Libro
JavaScript: A Pollock, Beginner's Guide John
.
Libro
AUTOR
and Sybex Inc
EDITORIAL/REVISTA
30%
2001
2000
Sybex Inc
2000
McGraw-Hill Osborne Media
2003
criterios para CALIFICACIÓN ORDINARIA (PONDERACIÓN) la Evaluación Actividades semanales
AÑO
Examen primer parcial. 15%
Portafolio reaprendizaje
10%
Examen parcial.
Trabajos independientes
20%
TOTAL
segundo
25%
100%
Reglas 1. El alumno es responsable de enterarse de su número de faltas y retardos. 2. El alumno debe contar con un mínimo del 80% de asistencia para tener derecho a su calificación final. 3. El alumno que se sorprenda incurriendo en actos desleales en la elaboración de exámenes, tareas o trabajos, obtendrá cero (0) de calificación en el trabajo, tarea y/o examen 4. Es responsabilidad del estudiante hablar inmediatamente con el maestro cuando tenga problemas con el material de clase, sus calificaciones, etc. De esta manera evitaremos problemas en el fin del ciclo. 5. Sólo se justifican inasistencias si son autorizadas por la coordinación académica bajo el procedimiento correspondiente 6. Se tomara asistencia al iniciar la clase. 7. Prohibido utilizar teléfonos celulares y/o aparatos electrónicos dentro del aula. 8. La clase es de 100 minutos efectivos. 9. La clase inicia a la hora en punto 10. No se permiten alimentos ni bebidas dentro del aula. 11. Deberá presentar su Carnet de Pago, expedido por su coordinador administrativo, para la autorización de recepción de trabajos finales y la aplicación de exámenes en la última semana del módulo. Calendarización
Sesión
1
Fecha
17/02/2014
Tema
1. Presentación del programa de curso. 2. Inducción a la materia. 3. Formación de equipos y asignación de los temas para exposición de los alumnos. 4. Exposición en PowerPoint de los temas (Maestro). 5. Análisis y reflexión de los temas por parte del alumno, dudas de clase. 6. Directrices para elaborar el portafolio de alumno y el proyecto final. Temas: 1. Servicios Web (Web services) 1.1. Qué son los servicios de Web. 1.2. Utilización en la actualidad de los web services 1.3. Importancia para los negocios de la utilización de estos servicios. Instalación de Apache Instalación de PHP Instalación de una distribución de Apache: XAMPP
2
18/02/2014
1.4. Descripción del funcionamiento de los servicios de web. 1.5. Comparación entre la orientación a servicio y la orientación a objetos Ejercicios prácticos #1, #2 y #3 Introducción a PHP
3
19/02/2014
Entornos de desarrollo para PHP Recursos de PHP 1.6. Definición de tienda virtual. 1.7. Que productos pueden ofrecerse de manera electrónica.
4
20/02/2014
Exposición Artículo 1: Conoce qué es el comercio electrónico y cómo sacarle partido para tu negocio. Artículo 2: Emprender tu propia tienda online es todo un reto que puedes sortear atendiendo a las siguientes siete recomendaciones de nuestros expertos en Internet. 2.
5
24/02/2014
Programación interpretada (scripting)
2.1. Validación de datos 2.2. Mensajes y confirmaciones
6
25/02/2014
7
26/02/2014
8
27/02/2014
9
03/03/2014
10
04/03/2014
11
05/03/2014
2. Eficiencia de los servicios web 2.1. Reducción de costo y aumento de eficiencia. 3. Sintaxis básica PHP Tipos de datos Variables Constantes Expresiones y operadores Estructuras de control Funciones Tablas Bibliotecas de funciones 2.2. Tecnologías base de los servicios web. Acceso a formularios HTML desde PHP El formulario de PHP Exposición artículos: Artículo3: Conéctate con el e-commerce. Artículo 4: -Sigue estos tips para vender tus productos en Facebook y ganar con esta estrategia de comercio electrónico. 3. Seguridad de los servicios Web 3.1. Uso de estándar para reducción de riesgos Programación en PHP Subida de ficheros al servidor Validación de los datos de un formulario Ejercicios Prácticos 3.2. Que hacer que no hacer en cuestión de seguridad 3.3. Análisis de riesgo. Exposición tema: 9 pasos para crear tu tienda online. Bases de datos en la Web
Instalación y configuración de MySQL MySQL Herramientas de administración: phpMyAdmin Lenguaje SQL Funciones de PHP para el acceso a bases de datos MySQL Ejercicios Consulta avanzada de tablas 12
06/03/2014
EXAMEN PRIMER PARCIAL
4. Implementación de los servicios web 13
10/03/2014
14
11/03/2014
15
12/03/2014
16
13/03/2014
17
17/03/2014
18
18/03/2014
Revisión final del portafolio y proyecto final
19
19/03/2014
EXAMEN SEGUNDO PARCIAL
20
20/03/2014
ENTREGA DE CALIFICACIONES ORDINARIAS
4.1. Estándares de mercado Manejo de sesiones Autenticación de usuarios Ejercicios prácticos 4.2. Estrategias de las distintas compañías Ejercicios prácticos Análisis y reflexión de los temas por parte del alumno, dudas de clase. Ejercicios prácticos Análisis y reflexión de los temas por parte del alumno, dudas de clase.
4.3. Modelo de negocio para los servicios web 4.4. Planeación de proyectos para una Arquitectura orientada a Servicios. Exposición tema: -Aumente las ventas de su tienda virtual.
EXAMEN EXTRAORDINARIOS
III.
Informaci贸n institucional.
Misión La misión de UNIDEP es formar profesionales de éxito que cuenten con las actitudes, habilidades y conocimientos que demanda el sector productivo de la región. Visión La Universidad del Desarrollo Profesional es una institución de educación superior de calidad, que ofrece programas presenciales y semis presenciales de bachillerato, profesional asociado, licenciatura, posgrado, diplomados y cursos en México y en el extranjero. Se distingue por facilitar a sus egresados la incorporación al mercado de trabajo, apoyada en una estrecha vinculación con el sector productivo y en planes de estudio pertinentes y dinámicos. Es reconocida por su modelo educativo profesionalizan te, por la flexibilidad de su oferta académica impartida en ciclos continuos y por horarios y cuotas accesibles, acordes a la disponibilidad de tiempo y recursos económicos del alumno. Cuenta con profesores de amplia experiencia profesional y educativa. Sus instalaciones dentro de la ciudad permiten el fácil acceso. Cuenta con un modelo de administración sistematizado, participativo, operado por personal que es recompensado por su desempeño efectivo que le permite maximizar las aportaciones de sus socios y mantener finanzas sanas
IV.
Introducción
La definición de Web Service de la W3C (WWW Consortium) es: “Un Web Service es un sistema de software interoperable diseñado para dar apoyo a la interacción máquina a máquina sobre una red”. Esta interacción se realiza por medio de mensajes SOAP (Simple Object Access Protocol) transportados a través del protocolo HTTP mediante una serialización XML en conjunto con otros estándares Web. Un Web Service es descrito utilizando el estándar WSDL (Web Service Description Language) y almacenado en un repositorio UDDI (Universal Description and Discovery Interface). Las tres tecnologías que conforman un Web Service: SOAP, WSDL y UDDI. Para que un Web Service funcione como tal, se necesita la interacción de dos entes, un consumidor y un proveedor del servicio. El proveedor pone a disposición un servicio describiéndolo por medio del estándar WSDL y almacenando su descripción en un registro UDDI. El consumidor consulta el registro UDDI buscando el servicio que desea obteniendo la descripción WSDL con el cual puede construir los mensajes SOAP apropiados enviándolos a través de una conexión HTTP(S) para comunicarse con el servicio. El estándar WSDL provee múltiples formas para interactuar con un servicio, por ejemplo, un mismo servicio podría ser descrito para estar disponible por medio de mensajes SOAP enviados a través de HTTP(S) en un servidor y por medio de mensajes RMI/IIOP enviados a través de TCP/IP a otro servidor.
1.-Servicios WEB Un Servicio Web es un componente software que puede ser registrado, descubierto e invocado mediante protocolos estándares de Internet. Permiten exponer y hacer disponibles funcionalidades (servicios) de los sistemas informáticos de las organizaciones mediante tecnologías y protocolos WEB estándar. Cada Servicio Web se responsabilidad de realizar un conjunto de funciones concretas y bien definidas. Servicios Web actúan como componentes independientes que se pueden integrar para formar sistemas distribuidos complejos.
Definición: (del World Wide Web Consortium [W3C]) ”Un Servicio Web (Web Service [WS]) es una aplicación software identificada por un URI (Uniform Resource Identifier ), cuyas interfaces se pueden definir, describir y descubrir mediante documentos XML. Los Servicios Web hacen posible la interacción entre “agentes” software (aplicaciones) utilizando mensajes XML intercambiados mediante protocolos de Internet.” Puntos clave: Interoperabilidad uso de estándares abiertos mínimo acoplamiento. Interoperabilidad: distintas aplicaciones, en lenguajes de programación diferentes, ejecutadas sobre cualquier plataforma, pueden utilizar los Servicios Web para intercambiar datos o La interoperabilidad se consigue mediante el uso de estándares abiertos. o Servicios Web se asientan sobre protocolos y estándares ya existentes y muy difundidos (HTTP, XML, etc). o Uso de protocolos específicos extensibles no imponen restricciones sobre las aplicaciones a las que dan acceso ni sobre las tecnologías que las implementan (independencia de lenguaje y de plataforma).
o OASIS y W3C: organizaciones responsables de definir la arquitectura y estándares para los Servicios Web. Pueden verse como una evolución de los mecanismos RPC. Uso de protocolos estándar de internet (HTTP, SMTP) como mecanismo para el transporte de los mensajes (invocación, respuesta,...). o Mensajes intercambiados se encapsulan dentro de mensajes HTTP (o SMTP). o Evitan problemas con firewalls y filtrado de puertos no privilegiados. o Para la red el tráfico de Servicios Web es trafico HTTP (o SMTP) normal. Uso de lenguajes basados en XML. o Los mensajes intercambiados son representados en documentos XML. o Servicios y métodos remotos son descritos en documentos XML. Escenario típico: Integración de un conjunto de aplicaciones de distintas empresas/organizaciones. Aplicaciones distribuidas convencionales se basan en el uso de un middleware común y centralizado (ORBs en CORBA, RMI en Java, etc.). Serv.Web permiten superar esa restricción no exigen middleware único común middleware abierto y no centralizado. Servicios Web ofrecen un punto de entrada a los sistemas de información locales. o Encapsulan una o más aplicaciones ofreciendo un interfaz único accesible por la Web. o Ofrecen un interfaz público y estable, independiente de su implementación concreta. o Facilitan la automatización de las interacciones entre los procesos internos de una organización con el exterior.
Concepto clave: servicio Un servicio es un procedimiento, un método o un objeto con una interfaz estable y pública que puede ser invocado por un cliente. o Los Servicios Web amplían esa idea para permitir que esa invocación se realiza a través de internet empleando protocolos Web estándar ya existentes. Arquitectura Orientada a Servicios (SOA). Aproximación al diseño de aplicaciones complejas basada en: o La identificación de los servicios que ofrecerá. o La definición de esos servicios. o La organización de las interacciones entre esos servicios. Importancia de las interfaces. o Descripción rigurosa de las interfaces. o Tratamiento automático para generar código de implementación. o Idea base: desarrollar el sistema a partir de las interfaces. Los servicios ofrecen operaciones a los clientes que deben ser invocadas en un orden determinado para lograr el objetivo deseado. Servicios simples vs. serv. compuestos (implementados invocando otros servicios). Necesidad de especificar reglas que gobiernen el intercambio (conversación) entre servicios protocolos de negocio. BPEL: Business Process Execution Language for Web Services. o Lenguaje (derivado de XML) que permite especificar las interacciones. o entre servicios (normalmente Servicios Web)
o Soporta la composici贸n de servicios simples para crear servicios compuestos.
2.- Arquitectura básica de protocolos de Servicios Web Elementos necesarios para la definición de Servicios Web 1. Sintaxis común para todas las especificaciones uso de XML XML: eXtensible Markup Language. o Estándar para la definición de lenguajes de marcas. o Flexible y extensible. Metalenguaje usado en Servicios Web para especificar los lenguajes y protocolos necesarios. o Permite definición de lenguajes para, describir servicios y representar mensajes intercambiados. 2. Mecanismos de interacción entre extremos uso de SOAP (Simple Object Access Protocol) Necesidad de un formato de mensajes neutro, abierto y extensible. o Representación de mensajes de invocación (argumentos) y respuesta (valor retorno) como documentos XML. Especificación del modo de interacción: síncrono (RPC: peticiónrespuesta) y asíncrono (petición). Mapeo de los mensajes en el protocolo de transporte (HTTP, SMTP). 3. Lenguaje común para describir los servicios uso de WSDL (Web Service Description Language) Descripción de los servicios y sus interfaces de forma estándar mediante documentos XML. Papel análogo al del IDL en middleware convencional. Incluye toda la información necesaria para suplir la falta de un middleware común centralizado.
o Especifica cada operación disponible, con sus parámetros de entrada y de salida. o Puede usarse para generar los stubs /skeleton y las capas intermedias necesarias para escribir, clientes que invoquen los servicios web y servidores que los implementen. o Especificar información sobre la localización del servicio (URIs). 4. Publicación y localización de servicios uso de UDDI (Universal Description, Discovery and Integration) La descripción de los servicios (documentos WSDL) se almacena en un directorio de servicios. UDDI específica cómo se publican y descubren los servicios, trabajan los directorios de servicios web. Acceso al directorio UDDI mediante Servicios Web uso mensajes SOAP. o Servidor da de alta de servicios (documentos WSDL + descripción). o Cliente “descubre” servicios (documentos WSDL). Algunas implementaciones Java API for XML Web Services: JAX-WS + JAX-RPC Forman parte de la especificación Java EE 5 (Java Enterprise Edition). Implementaciones incluidas en los servidores de aplicaciones Java EE. Implementación de referencia METRO (incluida en Java SE 6 [jdk 1.6]). Apache AXIS2 (Java y C) [http://ws.apache.org/axis2]. o La versión anterior (AXIS) incluye soporte para C++ o http://ws.apache.org/axis/cpp/index.html
 Perl: SOAP::Lite [http://www.soaplite.com]
3. Protocolo SOAP: Intercambio de mensajes. SOAP: Simple Object Access Protocol Objetivo: Especificar como organizar la información de forma estructurada y tipada usado XML para que sea intercambiada entre los extremos de la invocación. Especificado por el W3C (versión actual 1.2) o http://www.w3.org/2000/xp/Group/ o http://www.w3c.es/Traducciones/es/TR/2003/REC-soap12-part020030624/. Derivado de protocolo XML-RPC XMLR-RPC: formato XML para enviar invocaciones de métodos nombre método + codificación de la lista de parámetros. Limitado en cuanto a tipos de datos soportados. Protocolo SOAP especifica: Formato de mensajes común y extensible: describe cómo se organiza en forma de documentos XML la información a intercambiar. Conjunto de normas para implementar RPC mediante mensajes SOAP. Reglas a seguir por las entidades (cliente o servidor) que procesen los mensajes SOAP. o Indica elementos a tratar u omitir, quien debe hacerlo y los tipos de acciones a realizar. Descripción del modo en que se envían los mensajes SOAP sobre el protocolo de transporte (HTTP o SMTP).
Características SOAP define un intercambio de mensajes sin estado. o Posibilidad de soportar comunicaciones con estado añadiendo información adicional (IDs ´únicos) en la cabecera de los mensajes SOAP (cookies). Define una comunicación en una sola dirección. o Interacciones más complejas son gestionadas por los extremos. o Esquemas síncronos (RPC): mensaje petición + mensaje respuesta. o Esquemas asíncronos: solo mensaje petición. SOAP no impone restricciones sobre la semántica de los mensajes intercambiados. o SOAP sólo ofrece la infraestructura para transferir esos mensajes. o El significado de los mensajes (etiquetas XML) es interpretado por los extremos. o SOAP es independiente del modelo de datos de la aplicación. SOAP no se encarga de cuestiones de fiabilidad, integridad de los mensajes, transacciones, seguridad, etc. o La gestión de esos aspectos es responsabilidad de la infraestructura/aplicación que implementa el Servicio Web. Nota: La implementación de los Servicios Web es responsabilidad del extremo que lo ofrece y debe encargarse de interpretar el contenido de los mensajes SOAP. El extremo contará con un servidor Web que recibirá la petición SOAP y la redirigirá a la implementación del servicio Web. La implementación real del Servicio Web puede residir en un CGI (Common GatewayIeterface), un Servlet, un objeto CORBA, un componente EJB (enterprise Java Bean), un Procedimiento Almacenado de un SGBD, etc.
4. Estructura de los mensajes SOAP SOAP ofrece soporte para el envío de datos de aplicación arbitrarios. o Define la estructura de un “contenedor” de mensajes XML. o No establece restricciones sobre el contenido del mensaje ni sobre el procesamiento a realizar con él. o XML-RPC usaba etiquetas predefinidas (diferencia con SOAP). Mensaje SOAP: SOAP envelope (2 partes) Cabecera (etiqueta <Header>): componente opcional. Contiene información sobre el mensaje a usar por la infraestructura de Servicios Web. o Identificadores de transacciones. o Información de seguridad (claves, certificados, etc.). o Otros: prioridades, identificadores de origen y/o destino, etc. Atributos mustUnderstand actor indican que componente debe encargarse de interpretar esa cabecera (extremos de la comunicación, puntos intermedios). Puede estructurarse en bloques. Cuerpo (etiqueta <Body>): componente obligatorio. Contiene información específica a usar por las aplicaciones que usan o implementan el Servicio Web. o Los extremos son los responsables de acordar el formato de la información intercambiada y de generar y/o procesar su contenido. Puede estructurarse en bloques. o Usualmente los bloques mapean una invocación o respuesta RPC en formato XML.
o Esquema usual: codificación de parámetros y valor de retorno. o Suele hacerse uso de los tipos de datos definidos en la especificación XML Schema. o XML Schema permite representar en XML, tipos simples (enteros reales), tipo compuestos (estructuras, arrays). o Bloque especial fault: usado para representar errores en el procesamiento de mensajes SOAP. o Identificación del error (código de fallo). o Explicación legible del fallo. o Origen del fallo. SOAP no establece ninguna restricción en el contenido y estructura de los bloques incluidos en ambas secciones. o Aunque sí existen recomendaciones y prácticas comúnmente aceptadas. Bindings SOAP La especificación SOAP es independiente del protocolo de transporte usado para transferir los mensajes. o SOAP sólo define un contenedor de “mensajes” y la forma de encapsularlos en el protocolo de transporte que se use. binging SOAP: descripción de cómo se envía un mensaje SOAP utilizando un protocolo de transporte determinado. o Incluye la forma de especificar las direcciones de origen y destino. El binding típico de SOAP hace uso de mensajes HTTP para encapsular mensajes SOAP. o Peticiones HTTP POST: se envía el mensaje SOAP en el cuerpo de la petición HTTP la respuesta HTTP contiene un mensaje SOAP (respuesta o Fault).
El estándar también define bindings de SOAP sobre mensajes del protocolo SMTP (e-mail). La dirección de destino toma la forma de una URL en binding sobre HTTP (o el campo to: en bindings SMTP)
5. Protocolo WSDL: Descripción de servicios. WSDL: Web Services Description Language Middleware convencional: lenguajes de definición de interfaces (IDL). Servicios Web necesitan una descripción de interfaces más rica e independiente de la plataforma. 1. Definición de operaciones: nombre, argumentos (nombre + tipo), valor retorno. 2. Definición de mecanismos de interacción (bindings). o Sistemas distribuidos convencionales usan siempre el mismo middleware. o En Servicios Web cada servicio se puede servir con distintos protocolos (HTTP, SMTP). 3. Especificación de la localización del servicio (URI del servicio). o Localización a donde enviar los mensajes SOAP. Descripción del Servicio Web está basada en documentos XML conforme a la especificación WSDL. o http://www.w3.org/2002/ws/desc/ 6. Usos de WDSL 1. Como lenguaje de descripción de interfaz del servicio (IDL). Describe el interfaz que implementa el Servicio Web (contrato entre cliente y servidor). Indica cómo interactuar con el servicio, operaciones definidas datos a enviar y devolver formato mensajes + protocolo transferencia. 2. Como entrada para compiladores/generadores de stubs y/o skeleton. Las aplicaciones no escriben ni procesan directamente los mensajes XML SOAP.
A partir de la definición WSDL del Servicio Web se generan los elementos adicionales necesarios para que servidor implemente el Servicio Web, cliente realice la llamada al Servicio Web. o Stubs y skeletons. o Objetos y/o procedimientos para serializar los datos en el formato de los mensajes SOAP usados por cada Servicio Web concreto. Ejemplos: wsimport en Java JAX-WS, WSDL2java en Apache Axis. También es habitual contar con generadores WSDL que crean la especificación WSDL a partir de las implementaciones de los Servicios Web. Wsgen de Java: crea fichero WSDL a partir del código Java de una clase 7. Elementos de una especificación WSDL Documento WSDL describe un servicio Web como una colección de ports (puertos) [extremos de la comunicación (end points)] capaces de intercambiar mensajes. o Cada port tiene una definición abstracta (port type) [operaciones y mensajes] una definición concreta (binding ) [protocolos]. Elemento <definitions>: ra´ız del documento WSDL. o Usado para declarar espacios de nombres (XML namespace). Parte abstracta. o Equivalente al lenguaje IDL de sistemas distribuidos convencionales. o Describe de forma abstracta los servicios Web en términos de operaciones y mensajes.
Elemento <types>: Define los tipos y estructuras de datos de los datos intercambiados. Elemento <message>: Define los mensajes (datos que van a ser intercambiados), indicando su nombre y su contenido. o Un mensaje para un servicio concreto contendrá un conjunto de partes [elemento <part>]. o Cada parte está caracterizadas por un nombre y un tipo (definido en la sección types). Elemento <portType>: Define grupos de operaciones (ports, puertos) Para cada operación (elemento <operation>) se le asigna un nombre y se especifica el intercambio de mensajes [4 tipos]. o one-way: cliente invoca servicio enviando un único mensaje (asíncrono) o notifications: servidor envían un mensaje (asíncrono) o request-response: servidor recibe petición y responde (síncrono) o solicit-response: servidor invoca y espera respuesta (síncrono)
Parte concreta Se encarga de definir (concretar) la instancia real del servicio. o Especifica aspectos relativos al uso del servicio Web puertos que implementan protocolos de transporte usados dirección donde se ubica codificación de mensajes usada. Elemento <bindings>: Asocia a un grupo de operaciones (portType) una especificación de la codificación de mensajes y el protocolo de transporte (atributo transport) a utilizar. Informa a los usuarios del Servicio Web (clientes o servidores) de los protocolos a usar, de cómo estructurar los mensajes XML y de lo que se espera recibir al enviar un mensaje. o WSDL permite bindings para SOAP, HTTP GET, HTTP POST y MIME (SMTP).
o En el caso de usar SOAP como mecanismo de intercambio de mensajes el binding contiene toda la información necesaria para construir y procesar automáticamente los mensajes SOAP (atributo encodingStyle). Elemento <service>: Especifica una agrupación lógica de puertos (port). Opcionalmente puede incluir una descripción textual del servicio (elemento <description>) Cada puerto (elemento <port>) especifica un punto final (endpoint) [destino final de la comunicación]. o Asocia la información de los bindings (conjuntos de operaciones) a la dirección (URI) donde se accederá a sus implementaciones. o Port, portType + binding + localización. 8. Protocolo UDDI: Publicación de servicios. UDDI: (Universal Description, Discovery and Integration) Protocolo para interaccionar con un servidor (registro UDDI) que proporciona operaciones (vía SOAP) para registrar y buscar (descubrir) Servicios Web. Cada servicio se registra dando su nombre, una descripción del servicio (URL de su WSDL, una descripción textual, etc.). Uso de UDDI mediante APIs de programación basadas en SOAP. o El API de UDDI está especificada con WSDL uso de mensajes SOAP. o Alta (publicación) de Servicios Web por parte de los servidores. o Localización (descubrimiento) de Servicios Web por parte de los clientes. Finalidad: o Ofrecer soporte para encontrar información sobre servicios web y poder construir clientes.
o Facilitar el enlace dinámico, permitiendo consultar referencias y acceder a servicios de interés en tiempo de ejecución (descubrir servicios e invocarlos “al vuelo”). Especificación: http://uddi.xml.org Tipos de información ofrecida. Páginas blancas: Identificador y dirección de contacto de la empresa/organización que publica el Servicio Web Páginas amarillas: Descripciones de los Servicios Web ofrecidos usando diferentes tipos de categorizaciones (taxonomías) NAICS-North American Industry Classification System, UNSPSCUniversal Standard Products and Services Classification, etc. Paginas verdes: Info. Técnica sobre los servicios web (URL de descarga del WSDL). 9. Debilidades de los Web Services La debilidad principal de los Web Services está dada por el modelo de interacción entre el consumidor y el proveedor del servicio. De la Figura 1 se puede observar lo siguiente: El proveedor debe describir el servicio utilizando el estándar WSDL dando los detalles de cómo comunicarse con él. Esta descripción da bastante y preciada información a un consumidor malicioso para reunir antecedentes fácilmente al consultar el registro UDDI. Lo anterior da una ventaja al consumidor malicioso de Web Services por sobre un usuario malicioso de Aplicaciones Web ya que para este último es menos fácil saber qué tipo de parámetros espera la aplicación y qué contenido devolverá al navegador (browser) para ser desplegadas al usuario. Por otra parte, podemos descubrir otras debilidades al realizar un paralelo entre las Aplicaciones Web y Web Services ya que comparten características similares:
Los Web Services pertenecen a la capa de Aplicación del modelo OSI al igual que las Aplicaciones Web. Las organizaciones se han preocupado de mitigar las vulnerabilidades de las capas inferiores utilizando Firewalls, IDS, HIDS y Antivirus, pero han dejado desprotegida la capa donde residen las aplicaciones con las cuales realizan transacciones con sus clientes y usuarios, en particular, los Web Services son una tecnología que permite implementar una Arquitectura Orientada a los Servicios (SOA, Service Oriented Architecture) con un énfasis en las transacciones entre empresas (B2B, Business to Business) donde no siempre es necesaria una relación previa. Esto representa un atractivo económico bastante mayor para un usuario malicioso ya que en las Aplicaciones Web generalmente se realizan transacciones con personas (B2C Business to Consumer y C2C Consumer to Consumer). Los Web Services utilizan HTTP(S) para el envío de mensajes SOAP. Por lo general para el protocolo HTTP(S) se utilizan los puertos de conexión estándares 80 y 443 los cuales son permitidos en la mayoría de los Firewalls de Red de la mayoría de las organizaciones (Figura 3). Estos Firewalls no poseen la capacidad de analizar el tráfico HTTP(S) y menos aún las sentencias XML de los mensajes SOAP que circulan por este protocolo. Por otra parte, HTTPS provee seguridad en la comunicación mientras los mensajes son transportados, no cuando los mensajes son emitidos y/o recibidos por los participantes, además no permite intermediarios y no provee norepudiación. Los Web Services son accesibles desde Internet por cualquier usuario conectado a la red. Debido a la diversidad de formas de acceso a Internet que hay en la actualidad (PDAs, Notebooks, Teléfono, Wi-Fi, Bluetooth) y a la ubicuidad que dan a un usuario, el nivel de exposición de la organización aumenta y por ende su clasificación de riesgo. Este riesgo variará entre una organización y otra ya que una puede proveer servicios que sólo entreguen información, mientras que otra puede proveer servicios que realicen transacciones críticas para su negocio. Los Web Services acceden al back-end de la organización. El diseño en tres capas de las Aplicaciones Web (Capa de presentación, Capa de Control, Capa de Aplicación) también se aplica a Web Services
ya que éstos son aplicaciones Web que interactúan máquina a máquina los cuales pueden acceder al back-end de la organización Los Web Services son una aplicación de software y por lo tanto pueden tener debilidades en su diseño, en su etapa de desarrollo y de pruebas. En general, el diseño y desarrollo de toda aplicación de software considera un comportamiento esperado de un usuario y un flujo de datos de entrada y salida, pero no se lleva a cabo un adecuado control de comportamientos inesperados de un usuario. La interacción de un usuario con las aplicaciones Web es estática, en cambio la interacción entre máquinas en Web Services es dinámica. 10. Vulnerabilidades y ataques De acuerdo a las debilidades anteriormente expuestas aparecen una serie de vulnerabilidades que afectan a los tres pilares de la seguridad de la Información: Confidencialidad, Integridad y Disponibilidad. Las vulnerabilidades actualmente reconocidas en Web Services son similares a las identificadas en las Aplicaciones Web, pero con la diferencia que todo el tráfico de datos se realiza utilizando estándares basados en el lenguaje XML. Las vulnerabilidades de los Web Services se pueden clasificar de la siguiente forma: I. Vulnerabilidades estructurales II. Vulnerabilidades semánticas I. Vulnerabilidades estructurales Las vulnerabilidades estructurales son aquellas que pueden ser atacadas interviniendo las líneas de comunicación de los participantes (consumidor, intermediarios, servidor) que intercambian mensajes SOAP. En esta clasificación podemos identificar las siguientes vulnerabilidades:
1. Interceptación de mensajes. El envío de mensajes por medio del protocolo HTTP permite a un atacante interceptar y leer los mensajes SOAP dando lugar a otros posibles ataques: Alteración de mensajes: La información del mensaje es alterada al modificar, remover o reemplazar información del encabezado o del cuerpo del mensaje. Confidencialidad: La información del mensaje es leída por un agente no autorizado. Mensajes Falsificados: Se construyen mensajes falsos a partirde la copia de algunos o todos losmensajes interceptados para iniciaruna nueva comunicación con el servidor. Spoofing6 del servidor: Es una variación del anterior en el cual se impersona al servidor. Seguridad forzada: Las sentencias de seguridad de un mensaje son forzadas para obtener información no autorizada. Repetición de partes de mensajes: Se envían mensajes con porciones de otros mensajes para ganar acceso a información no autorizada o para causar que el receptor efectúe alguna acción.
2. Man-in-the-middle Los mensajes SOAP pueden ser transportados por intermediarios los cuales pueden ser comprometidos por un atacante para engañar al consumidor y al proveedor enviándoles mensajes impersonando a ambos, aun cuando se utilice encriptación ya que el atacante puede ser capaz de obtener la clave de sesión. 3. Spoofing Un atacante puede impersonar a uno o varios participantes confiables (autenticados) de la comunicación de mensajes SOAP para obtener información no autorizada o causar que una de las partes ejecute una acción no autorizada.
4. Repetición de mensajes Los mensajes SOAP son interceptados por un atacante y luego repetidos hacia el destino. Este ataque se utiliza para reunir información confidencial para eventuales ataques futuros o transacciones fraudulentas. 5. Denegación de Servicio Un atacante puede interceptar un mensaje, eventualmente modificar el encabezado y el cuerpo (rutas y/o sentencias XML) y enviarlo repetidamente para sobrecargar el servicio del intermediario o del destino final con lo cual logra que el servidor o el intermediario no pueda atender a un consumidor legítimo. II. Vulnerabilidades semánticas Las vulnerabilidades semánticas son aquellas que son atacadas por debilidades en la codificación y procesamiento de los mensajes SOAP. Los Web Services están basados en el lenguaje XML el cual entrega un alto nivel de detalle para realizar la descripción del servicio (utilizando WSDL), su publicación (en el registro UDDI) y ejecución (por medio de mensajes SOAP). Este nivel de detalle conlleva una etapa de procesamiento de las sentencias con un alto consumo de recursos computacionales (CPU, Memoria y Red) por parte de los participantes de la comunicación (consumidor, intermediarios, proveedor). Las vulnerabilidades más comunes dentro de esta clasificación son las siguientes:
Entradas inválidas Los parámetros enviados al servidor en un mensaje SOAP no son debidamente validados por el Web Service con lo cual un atacante puede enviar mensajes con código malicioso tanto en el encabezado como en el cuerpo del mensaje para ejecutar una acción no autorizada. Control de acceso débil El control de acceso para los consumidores de un servicio no tiene las restricciones adecuadas para evitar que un atacante acceda al servicio con permisos de consumidores válidos para obtener información y realizar acciones autorizadas. Autenticación y manejo de sesión débiles Una política débil de contraseñas del proveedor de un Web Service puede permitir que un atacante descubra las contraseñas por medio de ataques de diccionario y de fuerza bruta. Lo anterior también se cumple para claves de sesión cuya encriptación no es la mejor debido a debilidades del algoritmo de encriptación o por el largo de las claves. Esta vulnerabilidad permitiría a un atacante utilizar la identidad de consumidores autorizados para obtener información o efectuar alguna acción autorizada por el servicio. Cross Site Scripting Esta vulnerabilidad también se conoce como XML Encapsulation y se basa en un débil control de los elementos XML de un mensaje SOAP. El lenguaje XML puede permitir a un atacante embeber código malicioso dentro de los elementos de un mensaje SOAP para ganar acceso no autorizado en el servicio, obtener información de sesiones de consumidores que acceden el servicio, o para engañar a otros consumidores. Buffer Overflows El diseño y desarrollo de un Web Service debe considerar el manejo de entradas en los elementos del código XML con un largo máximo de caracteres, de lo contrario permitiría a un atacante enviar mensajes al
servicio con un largo inesperado provocando que el servicio sea comprometido debido a una falla o accediendo a información o procesos de sistema. Injection Flaws Dado que un atacante puede embeber código malicioso en los mensajes SOAP, es posible enviar mensajes con fragmentos de sentencias SQL utilizando caracteres especiales u otros comandos de sistema para obtener información no autorizada del servicio. El atacante debe tener un conocimiento previo de cuál es la tecnología detrás del Web Service para embeber (o inyectar) las sentencias y comandos necesarios para efectuar el ataque. Manejo inapropiado de errores Un manejo inapropiado de las condiciones de error mientras el Web Service está operando normalmente puede entregar información valiosa del sistema a un atacante que envía mensajes inválidos ya que puede utilizarla para inferir más información para un posterior ataque que pueda causar la falla del servicio u obtener más información por medio de inyección de código. Esta vulnerabilidad va asociada a un débil diseño, desarrollo y pruebas del Web Service. Contenido Malicioso Un Web Service que necesita intercambiar datos binarios (imágenes, audio, video, archivos ejecutables) utiliza mensajes SOAP con archivos adjuntos. Estos archivos deben ser enviados como parámetro de un elemento XML del mensaje y para ello se codifican con Base 64 o MIME. Dada esta característica, un atacante podría enviar virus o troyanos para causar alguna falla en el Web Service y el sistema subyacente. Denegación de servicio Este tipo de vulnerabilidad es una de las más difíciles de mitigar debido a que las organizaciones no están preparadas para la variedad de amenazas existentes.
Los ataques están asociados principalmente a un mal manejo de las entradas para un Web Service y a la débil configuración de los sistemas. Los ataques más comunes son: i. Envío de ráfagas de mensajes SOAP inválidos para que el servidor utilice toda su capacidad de procesamiento en condiciones de error y con ello no pueda atender ningún requerimiento de los demás consumidores, o incluso causar la falla del sistema. Este ataque aprovecha el débil manejo de las condiciones de error de un Web Service. ii. Envío de ráfagas de mensajes SOAP de gran tamaño provocando que el servidor quede totalmente ocupado o fuera de línea para atender a los consumidores. Este ataque aprovecha la vulnerabilidad de Buffer Overflow. iii. Envío de ráfagas de mensajes SOAP cuyo cuerpo (payload) es excesivamente grande para que un servidor los procese quedando fuera de línea. iv. External Entity: Los mensajes SOAP pueden referenciar entidades externas para entradas XML que son procesadas (interpretadas) por el proveedor del servicio. Si una de estas entidades está comprometida por un atacante, puede causar que el Web Service abra archivos arbitrarios y/o conexiones TCP provocando una denegación del servicio.
v. Schema Poisoning: Un esquema XML describe instrucciones preprocesadas para la interpretación de un documento XML. Un atacante podría comprometer (alterar) un esquema para que en el momento de la interpretación de los elementos XML del mensaje SOAP provoque un alto uso de recursos computacionales en el servidor. Por otra parte, el atacante podría alterar el esquema para obtener información y ejecutar acciones no autorizadas. vi. Envío de ráfagas de mensajes SOAP con archivos adjuntos de gran tamaño para provocar una falla en el servidor para que no responda a los requerimientos de otros consumidores.
vii. Envío de mensajes SOAP con archivos adjuntos de código malicioso (virus, troyanos, macros) para causar una falla en el servicio y/o en el sistema del proveedor. Configuración Insegura La seguridad de la plataforma sobre la cual funcionan los Web Services de una organización es primordial. Un atacante podría afectar las instalaciones y sistemas de la organización si no se mantiene un fuerte control de acceso de las aplicaciones y Web Services al back-end utilizando un ataque o una combinación de los ataques antes enumerados. Según Gartner Group los Web Services reabrirán el 70% de los caminos de ataque cerrados por los Firewalls de red. 11. Desafíos a la Seguridad de los Web Services En la actualidad existen recomendaciones para abordar la seguridad de los Web Services a través de marcos de trabajo definidos por OASIS la cual es una organización para la estandarización de Web Services con la cooperación de las empresas tecnológicas más grandes del mundo.OASIS define WS-Security (Web Services Security) para tratar las siguientes consideraciones: Las relaciones de confianza entre las organizaciones podrían necesitar la definición de contratos legales y responsabilidades. Los requerimientos a un Web Service deberían ser autenticados y autorizados apropiadamente. Los mensajes hacia y desde un Web Service deberían ser protegidos de accesos y modificación no autorizados. WS- Security no es un reemplazo de alguna tecnología de seguridad sino que provee un modelo unificado que utiliza las tecnologías existentes y que permite que las aplicaciones intercambien mensajes SOAP de forma segura. WS-Security provee mecanismos extensibles y flexibles, pero esta extensibilidad puede afectar la interoperabilidad de las distintas plataformas tecnológicas.
WS-I (Web Services Interoperability Organization) [4] es una organización apoyada por las empresas tecnológicas más grandes del mundo, y que define cómo se deberían cumplir los requerimientos de interoperabilidad al utilizar un conjunto de tecnologías que aseguran la transmisión de los mensajes SOAP. Según la WS-I los desafíos de seguridad en la transmisión mensajes SOAP son los siguientes: Identificación y Autenticación de las partes. Identificación y Autenticación de los datos de origen. Integridad de los datos: Integridad en el transporte y del mensaje SOAP. Confidencialidad de los datos: Confidencialidad en el transporte y del mensaje SOAP. Unicidad del mensaje SOAP.
Los estándares que permiten abordar estos desafíos son los siguientes: WS-Security (Web Services Security), provee un marco de trabajo para el transporte seguro de mensajes SOAP. WS-Trust, describe un modelo conceptual de confianza que permite que los Web Services interoperen en forma segura. WS-Policy, describe un marco de trabajo para definir permisos y restricciones de las políticas de seguridad entre los participantes de la transmisión de los mensajes SOAP. WS-SecureConversation, define un marco de trabajo para manejar y autenticar el intercambio de mensajes SOAP incluyendo su contexto de seguridad. WS-Federation, define cómo establecer relaciones de confianza entre dominios de seguridad. WS-Privacy, describe la sintaxis y semántica para la comunicación privada de políticas de seguridad para Web Services e instancias de datos en mensajes. WS-Authorization, describe cómo las políticas de acceso para un Web Service son especificadas y gestionadas. SAML (Security Assertion Markup Language), provee un marco de trabajo para intercambiar información en forma segura.
XACML (eXtensible Access Control Markup Language), es un lenguaje para escribir políticas de control de acceso. XKMS (XML Key Management Specification), es un mecanismo basado en XML para la gestión de una Infraestructura de Clave Pública (PKI). XML Encryption, es un mecanismo para encriptar partes de un documento XML. XML Signature, es un mecanismo para firmar partes de un documento XML. 12. Prevención y Mitigación Los Web Services han ampliado el campo de acción de los usuarios maliciosos para cometer sus delitos. Una buena política de seguridad de la información en las organizaciones es un buen punto de partida para disminuir el riesgo al cual están expuestos. Existe una variedad de amenazas y cada una de ellas con un alto impacto en la seguridad de la información de una organización, y es aún mayor si su modelo de negocios se basa principalmente en Internet. Es por ello que es necesario definir nuevos modelos de evaluación del riesgo de la seguridad de la información para aquellas organizaciones que están inmersas en una arquitectura orientada a los servicios (SOA, Service Oriented Architecture). Estos modelos deben considerar lo siguiente: La política de seguridad de la Información de la organización y su aplicabilidad. La evaluación de riesgo de la organización antes de implementar Web Services. Las medidas de mitigación existentes antes de implementar Web Services. Indicadores del riesgo basados en la interacción con sus clientes y con las otras organizaciones. A partir de la evaluación basada en estos modelos se puede tener claridad para saber en qué áreas poner mayor énfasis y definir un camino para iniciar un plan de seguridad de la información cuyo objetivo final será el nivel de seguridad deseado por la organización. Este
camino es largo, de mejora continua, pero flexible y con hitos específicos a corto y mediano plazo. Los hitos que se pueden definir a mediano plazo se refieren a metas específicas para la seguridad de los Web Services, entre ellos: Aumentar la seguridad de la plataforma tecnológica de la organización. Mitigar las vulnerabilidades descubiertas en los Web Services existentes en producción y en desarrollo. Utilizar las mejores prácticas para las etapas de diseño, desarrollo y prueba de los Web Services. Si la organización utiliza outsourcing de esta área, debe verificar que quien le presta el servicio cumpla con estos requisitos. Un modelo de desarrollo seguro de software es el definido por SSE-CMM. Definir controles para la operación y mantenimiento de los Web Services. Definir un plan de recuperación ante desastres. Definir un plan de continuidad del negocio. Los hitos definidos a corto plazo son metas específicas derivadas de la evaluación para cumplir con las medidas de mediano plazo. Algunos ejemplos son: Mitigar las vulnerabilidades de la red. Aumentar los controles de acceso al back-end. Definir controles de autenticación y autorización para los consumidores de un servicio. Utilizar comunicación segura para el intercambio de mensajes SOAP. Definir un sistema de control de cambios para el desarrollo de los Web Services. Dado que este modelo de prevención y mitigación involucra a toda la organización, un cambio en sus procesos y en la mentalidad organizacional, la puesta en marcha de este plan y el logro de las metas a corto plazo pueden retrasarse. Sin embargo, la organización puede
tomar medidas preventivas y de mitigación a priori que deben estar asesoradas por especialistas de la seguridad de la información con el objetivo que estas medidas apunten a establecer un paso previo a la puesta en marcha de un modelo de prevención y mitigación. Por ejemplo, una organización puede tomar las siguientes medidas: Utilizar un Firewall para la capa de Aplicaciones que sea capaz de analizar el tráfico HTML para las aplicaciones Web, y XML para los Web Services. Validar el uso de los esquemas XML en los Web Services. Monitorear los eventos registrados por el Firewall de Aplicaciones y obtener estadísticas para la definición de métricas que sirvan para establecer medidas de riesgo. Establecer políticas de comunicación comunes con las organizaciones que utilicen sus Web Services. Las medidas anteriores disminuyen el riesgo al cual está expuesta la organización en un mediano plazo y de ninguna forma constituyen medidas suficientes para quedar protegidos de todas las amenazas existentes y de las aún no conocidas.
VI.
Proyecto final “Sistema de control de alumnos”
http://localhost/sitioWeb/index.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> section {clear:both} #menu, #menu ul { list-style:none; padding: 0; margin: 0; } /* hace referencia a los primeros enlaces */ #menu li { float:left; position:relative; width: 10em; } /* hace referencia a los segundos submenus */ #menu li ul {
position:absolute; display: none; } /* hace referencia a los tereceros submenus*/ #menu li ul li ul { margin-top: -2.2em; margin-left: 10em; } /* hace referencia a los cuartos submenus */ #menu li ul li ul li ul { margin-top: -2.2em; margin-left: 10em; } /* hace referencia al formato de los enclaes */ #menu a { display: block; border-right: 1px solid #fff; background: #E0F574; color: #3B3B3B; text-decoration: none; padding:10px; } /* hace referencia al formato cuando se pasa el raton por encima del enlace */ #menu a:hover { background-color: #5798b4; color:#fff; } /* hace referencia a los bloques de los segundos menus en adelante */ #menu ul{ border-top: 1px solid:#fff; } /* hace referencia al formato del enlaces de los segundos menus en adelante */ #menu ul a { border-right: none;
border-right: 1px solid #fff; border-bottom: 1px solid #fff; border-left: 1px solid #fff; background: #AEC245; } /* esconde los menus de tercer nivel cuando estamos en el primer nivel */ #menu li:hover ul ul { display: none; } /* esconde los menus de cuarto nivel cuando estamos en el primer nivel */ #menu li:hover ul ul ul { display: none; } /* esconde los menus de cuarto nivel cuando estamos en el segundo nivel */ #menu li ul li:hover ul ul { display: none; } /* muestra los menus de segundo nivel */ #menu li:hover ul { display: block; } /* muestra los menus del tercer nivel */ #menu li ul li:hover ul{ display: block; } /* muestra los menus de cuarto nivel*/ #menu li ul li ul li:hover ul{ display: block; } </style> </head> <body>
<header> <h1>SISTEMA DE CONTROL DE ALUMNOS</h1> <nav id="menu"> <li><a href="index.php" class="selected">Inicio</a>
title="Homepage"
</li> <li><a href="#" title="Sistema">Alumnos</a> <ul> <li><a href="#" title="consultas">Consultas</a> <ul> <li><a href="P.consulta_alumnos.php" title="consultatotal">Consulta Total De Alumnos</a></li> <li><a href="OP_consulta_un_alumno.php" title="consultxalumno">Consulta de un alumno</a></li> </ul> </li> <li><a href="#" title="proceso">Altas/Bajas Alumnos</a> <ul> <li><a href="OPC_inserta_alumno.php" title="ingresos">Altas de alumnos</a></li> <li><a href="OPC_borra_alumno.php" title="bajas">Bajas de alumnos</a></li> </li> </ul> </li> </ul> </li>
<li><a href="#" title="Contacto">Contacto</a></li> <li><a href="#" title="La Empresa">La Empresa</a></li> </nav> </header> <section> <article> contenido de la pagina </article> </section> </body> </html>
http://localhost/sitioWeb/P.consulta_alumnos.php
<html lang="es"> <head> <title>Consulta de Alumnos</title> <link REL="stylesheet" TYPE="text/css" HREF="estilos.css"> </head> <body> <h1>Consulta de Alumnos</h1> <?PHP //Conectar con el servidor de base de datos $conexion = mysql_connect ("localhost", "root", "") or die ("No se puede conectar con el servidor"); //Seleccionar base de datos mysql_select_db ("misitioweb") or die ("No se puede seleccionar la base de datos---"); //Calcular el nĂşmero total de filas de la tabla $instruccion = "select * from alumnos";
$consulta = mysql_query ($instruccion, $conexion) or die ("Fallo en la consulta"); $infilas = mysql_num_rows ($consulta); //Enviar consulta $instruccion = "select * from alumnos"; $consulta = mysql_query ($instruccion, $conexion) or die ("Fallo en la consulta"); //Mostrar resultados de la consulta $nfilas = mysql_num_rows ($consulta); if ($nfilas > 0) { print ("<TABLE>\n"); print ("<TR>\n"); print ("<TH>Matricula</TH>\n"); print ("<TH>Nombre</TH>\n"); print ("<TH>Carrera</TH>\n"); print ("<TH>estatus</TH>\n"); print ("<TH>Sexo</TH>\n"); print ("</TR>\n"); for ($i=0; $i<$nfilas; $i++) { $resultado = mysql_fetch_array ($consulta); print ("<TR>\n"); print ("<TD>" . $resultado['matricula'] . "</TD>\n"); print ("<TD>" . $resultado['nombre'] . "</TD>\n"); print ("<TD>" . $resultado['carrera'] . "</TD>\n"); print ("<TD>" . $resultado['estatus'] . "</TD>\n"); print ("<TD>" . $resultado['sexo'] . "</TD>\n"); print ("</TR>\n"); } print ("</TABLE>\n");
} else print ("No hay Alumnos disponibles"); //Cerrar conexi贸n mysql_close ($conexion); print ("<br>\n"); print ("<p>[<a href='index.php'>Regresar</a>] </p>\n" ); ?> </body> </html>
http://localhost/sitioWeb/OP_consulta_un_alumno.php
<html lang="es"> <head> <meta charset="utf-8"> <title>Consulta un Alumno</title> <link rel="stylesheet" type="text/css" href="estilos.css"> </head> <body> <h1>Consulta de un Alumno</h1> <h2>Datos del Alumno</h2> <form class="borde" action="ejecutar_consulta_alumno.php" method="post"> <p><label>MatrĂcula</label> <input type="text" size="20" name="txtmatricula"></p> <p><input type="submit" name="consulta" value="Consultar"></p> <?PHP
print ("<br>\n"); print ("<p>[<a href='index.php'>Regresar al menu</a>]</p>\n");
?> </form> </body> </html>
http://localhost/sitioWeb/OPC_inserta_alumno.php
<html lang="es"> <head> <meta charset="utf-8"> <title>Formulario de Datos de Alumno</title> <link rel="stylesheet" type="text/css" href="estilos.css"> </head> <body> <h1>Altas de Alumnos</h1> <h2>Captura los datos siguientes</h2> <form class="borde" action="alta_alumno.php" method="post"> <p><label>MatrĂcula:</label> <input type="text" size="20" name="txtmatricula"></p> <p><label>Nombre:</label> <input type="text" size="40" name="txtnombre"></p> <p><label>Sexo:</label> <input type="radio" name="donde" value="H" checked>Masculino <input type="radio" name="donde" value="F">Femenino <P><label>Carrera:</label>
<input type="text" size="5" name="txtcarrera"></P> <p><label>Estatus:</label> <input type="text" size="10" name="txtestatus"></p> <p><input type="submit" name="guardar" value="Guardar"></p> <?PHP print ("<br>\n"); print ("<p>[<a href='index.php'>Regresar al menu</a>]</p>\n"); ?> </form> </body> </html>
http://localhost/sitioWeb/OPC_borra_alumno.php
<html lang="es"> <head> <meta charset="utf-8"> <litle>Baja Alumno</litle> <link rel="stylesheet" type="text/css" href="estilos.css"> </head> <body> <h1>Baja de Alumnos</h1> <h2>Captura la MatrĂcula del Alumno a dar de baja</h2> <form class="borde" action="ejecuta_elimina_alumno.php" method="post"> <p><label>MatrĂcula:</label> <input type="text" size="20" name="txtmatricula"></p> <p><input type="submit" name="eliminar" value="Eliminar"></p> <?PHP print ("<br>\n");
print ("<p>[<a href='index.php'>Regresar al menu</a>]</p>\n"); ?> </form> </body> </html>
VII.
Tareas
File Transfer Protocol (FTP) FTP (siglas en inglés de File Transfer Protocol, 'Protocolo de Transferencia de Archivos') en informática, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura clienteservidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo. El servicio FTP es ofrecido por la capa de aplicación del modelo de capas de red TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. Un problema básico de FTP es que está pensado para ofrecer la máxima velocidad en la conexión, pero no la máxima seguridad, ya que todo el intercambio de información, desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo, se realiza en texto plano sin ningún tipo de cifrado, con lo que un posible atacante puede capturar este tráfico, acceder al servidor y/o apropiarse de los archivos transferidos. Para solucionar este problema son de gran utilidad aplicaciones como scp y sftp, incluidas en el paquete SSH, que permiten transferir archivos pero cifrando todo el tráfico.
Existen muchas bibliotecas de funciones en PHP Algunos ejemplos: Funciones de manipulación de cadenas addcslashes — Escapa una cadena al estilo de C addslashes — Escapa un string con barras invertidas bin2hex — Convierte datos binarios en su representación hexadecimal chop — Alias de rtrim chr — Devuelve un caracter específico chunk_split — Divide una cadena en trozos más pequeños convert_cyr_string — Convierte de un juego de caracteres cirílico a otro juego de caracteres cirílico convert_uudecode — Descodifica una cadena codificada mediante uuencode convert_uuencode — Codifica, mediante uuencode, una cadena count_chars — Devuelve información sobre los caracteres usados en una cadena crc32 — Calcula el polinomio crc32 de una cadena crypt — Hashing de una sola vía de un string echo — Muestra una o más cadenas explode — Divide una cadena en varias cadenas fprintf — Escribir una cadena con formato a una secuencia get_html_translation_table — Devuelve la tabla de traducción utilizada por htmlspecialchars y htmlentities hebrev — Convierte texto hebreo lógico a texto visual hebrevc — Convertir texto de hebreo lógico a texto visual con conversión de línea nueva hex2bin — Decodifica una cadena binaria codificada hexadecimalmente html_entity_decode — Convierte todas las entidades HTML a sus caracteres correspondientes htmlentities — Convierte todos los caracteres aplicables a entidades HTML
htmlspecialchars_decode — Convierte entidades HTML especiales de nuevo en caracteres htmlspecialchars — Convierte caracteres especiales en entidades HTML implode — Une elementos de un array en un string join — Alias de implode lcfirst — Pasa a minúscula el primer caracter de un string levenshtein — Cálculo de la distancia Levenshtein entre dos strings localeconv — Obtener información sobre el formato numérico ltrim — Retira espacios en blanco (u otros caracteres) del inicio de un string md5_file — Calcula el resumen criptográfico md5 de un archivo dado md5 — Calcula el hash md5 de un string metaphone — Calcula la clave metaphone de un string money_format — Da formato a un número como un string de moneda nl_langinfo — Consulta información sobre el idioma y la configuración regional nl2br — Inserta saltos de línea HTML antes de todas las nuevas líneas de un string number_format — Formatear un número con los miles agrupados ord — devuelve el valor ASCII de una caracter parse_str — Interpreta el string en variables print — Mostrar una cadena printf — Imprimir una cadena con formato quoted_printable_decode — Convierte un string quotedprintable en un string de 8 bits quoted_printable_encode — Convierte un string de 8 bits en un string quoted-printable quotemeta — Escapa meta caracteres rtrim — Retira los espacios en blanco (u otros caracteres) del final de un string
setlocale — Establecer la información de la configuración regional sha1_file — Calcula el hash sha1 de un archivo sha1 — Calcula el hash sha1 de un string similar_text — Calcula la similitud entre dos strings soundex — Calcula la clave soundex de un string sprintf — Devuelve un string formateado sscanf — Interpreta un string de entrada de acuerdo con un formato str_getcsv — Interpreta un string de CSV en un array str_ireplace — Versión insensible a mayúsculas y minúsculas de str_replace str_pad — Rellena un string hasta una longitud determinada con otro string str_repeat — Repite un string str_replace — Reemplaza todas las apariciones del string buscado con el string de reemplazo str_rot13 — Realizar la transformación rot13 sobre una cadena str_shuffle — Reordena aleatoriamente una cadena str_split — Convierte un string en un array str_word_count — Devuelve información sobre las palabras utilizadas en un string strcasecmp — Comparación de string segura a nivel binario e insensible a mayúsculas y minúsculas strchr — Alias de strstr strcmp — Comparación de string segura a nivel binario strcoll — Comparación de cadenas basada en la localidad strcspn — Encuentra la longitud del segmento inicial que no coincida con la máscara strip_tags — Retira las etiquetas HTML y PHP de un string stripcslashes — Desmarca la cadena marcada con addcslashes stripos — Encuentra la posición de la primera aparición de un substring insensible a mayúsculas y minúsculas en in string stripslashes — Quita las barras de un string con comillas escapadas
stristr — strstr insensible a mayúsculas y minúsculas strlen — Obtiene la longitud de un string strnatcasecmp — Comparación de strings, insensible a mayúsculas y minúsculas, utilizando un algoritmo de "orden natural" strnatcmp — Comparación de strings utilizando un algoritmo de "orden natural" strncasecmp — Comparación de los primeros n caracteres de cadenas, segura con material binario e insensible a mayúsculas y minúsculas strncmp — Comparación segura a nivel binario de los primeros n caracteres entre strings strpbrk — Buscar una cadena por cualquiera de los elementos de un conjunto de caracteres strpos — Encuentra la posición de la primera ocurrencia de un substring en un string strrchr — Encuentra la última aparición de un caracter en un string strrev — Invierte una string strripos — Encuentra la posición de la última aparición de un substring insensible a mayúsculas y minúsculas en un string strrpos — Encuentra la posición de la última aparición de un substring en un string strspn — Encuentra la longitud del segmento inicial de un string que consista únicamente en caracteres contenidos dentro de una máscara dada. strstr — Encuentra la primera aparición de un string strtok — Tokeniza string strtolower — Convierte una cadena a minúsculas strtoupper — Convierte un string a mayúsculas strtr — Convierte caracteres o reemplaza substrings substr_compare — Comparación segura a nivel binario de dos o más cadenas desde un índice, hasta una longitud dada de caracteres substr_count — Cuenta el número de apariciones del substring
substr_replace — Reemplaza el texto dentro de una porción de un string substr — Devuelve parte de una cadena trim — Elimina espacio en blanco (u otro tipo de caracteres) del inicio y el final de la cadena ucfirst — Convierte el primer caracter de una cadena a mayúsculas ucwords — Convierte a mayúsculas el primer caracter de cada palabra en una cadena vfprintf — Escribe un string con formato en un flujo vprintf — Muestra una cadena con formato vsprintf — Devuelve una cadena con formato wordwrap — Ajusta un string hasta un número dado de caracteres
Funciones de fecha y hora checkdate — Validar una fecha gregoriana date_add — Alias de DateTime::add date_create_from_format — Alias de DateTime::createFromFormat date_create_immutable_from_format — Alias de DateTimeImmutable::createFromFormat date_create_immutable — Alias de DateTimeImmutable::__construct date_create — Alias de DateTime::__construct date_date_set — Alias de DateTime::setDate date_default_timezone_get — Obtiene la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script date_default_timezone_set — Establece la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script
date_diff — Alias de DateTime::diff date_format — Alias de DateTime::format date_get_last_errors — Alias de DateTime::getLastErrors date_interval_create_from_date_string — Alias de DateInterval::createFromDateString date_interval_format — Alias de DateInterval::format date_isodate_set — Alias de DateTime::setISODate date_modify — Alias de DateTime::modify date_offset_get — Alias de DateTime::getOffset date_parse_from_format — Obtiene información de una fecha dada formateada de acuerdo al formato especificado date_parse — Devuelve una matriz asociativa con información detallada acerca de una fecha dada date_sub — Alias de DateTime::sub date_sun_info — Devuelve una matriz con información sobre la puesta/salida del sol y el comienzo/final del crepúsculo date_sunrise — Devuelve la hora de la salida del sol de un día y ubicación dados date_sunset — Devuelve la hora de la puesta de sol de un día y ubicación dados date_time_set — Alias de DateTime::setTime date_timestamp_get — Alias de DateTime::getTimestamp date_timestamp_set — Alias de DateTime::setTimestamp date_timezone_get — Alias de DateTime::getTimezone date_timezone_set — Alias de DateTime::setTimezone date — Dar formato a la fecha/hora local getdate — Obtener información de la fecha/hora gettimeofday — Obtener la hora actual gmdate — Formatea una fecha/hora GMT/UTC gmmktime — Obtener la marca de tiempo Unix para una fecha GMT gmstrftime — Formatear una fecha/hora GMT/UTC según la configuración regional idate — Formatea una fecha/hora local como un entero localtime — Obtiene fecha y hora local microtime — Devuelve la fecha Unix actual con microsegundos
mktime — Obtener la marca de tiempo Unix de una fecha strftime — Formatea una fecha/hora local según la configuración regional strptime — Analiza una fecha/hora generada con strftime strtotime — Convierte una descripción de fecha/hora textual en Inglés a una fecha Unix time — Devuelve la fecha Unix actual timezone_abbreviations_list — Alias de DateTimeZone::listAbbreviations timezone_identifiers_list — Alias de DateTimeZone::listIdentifiers timezone_location_get — Alias de DateTimeZone::getLocation timezone_name_from_abbr — Devuelve el nombre de la zona horaria desde su abreviatura timezone_name_get — Alias de DateTimeZone::getName timezone_offset_get — Alias de DateTimeZone::getOffset timezone_open — Alias de DateTimeZone::__construct timezone_transitions_get — Alias de DateTimeZone::getTransitions timezone_version_get — Obtiene la versión de la base de datos timezonedb Funciones de arrays array_change_key_case — Cambia a mayúsculas o minúsculas todas las claves en un array array_chunk — Divide un array en fragmentos array_column — Devuelve los valores de una única columna del array de entrada array_combine — Crea un nuevo array, usando una matriz para las claves y otra para sus valores array_count_values — Cuenta todos los valores de un array array_diff_assoc — Calcula la diferencia entre arrays con un chequeo adicional de índices array_diff_key — Calcula la diferencia entre arrays usando las keys para la comparación
array_diff_uassoc — Calcula la diferencia entre arrays con un chequeo adicional de índices que se realiza por una función de devolución de llamada suministrada por el usuario array_diff_ukey — Calcula la diferencia entre arrays usando una función de devolución de llamada en las keys para comparación array_diff — Calcula la diferencia entre arrays array_fill_keys — Llena un array con valores, especificando las keys array_fill — Llena un array con valores array_filter — Filtra elementos de un array usando una función de devolución de llamada array_flip — Intercambia todas las keys con sus valores asociados en un array array_intersect_assoc — Calcula la intersección de arrays con un chequeo adicional de índices array_intersect_key — Calcula la intersección de arrays usando las keys para la comparación array_intersect_uassoc — Calcula la intersección de arrays con un chequeo adicional de índices que se realiza por una función de devolución de llamada array_intersect_ukey — Calcula la intersección de arrays usando una función de devolución de llamada en las keys para la comparación array_intersect — Calcula la intersección de arrays array_key_exists — Verifica si el índice o clave dada existe en el array array_keys — Devuelve todas las claves de un array o un subconjunto de claves de un array array_map — Aplica la llamada de retorno especificada a los elementos de cada array array_merge_recursive — Une dos o más arrays recursivamente array_merge — Combina dos o más arrays array_multisort — Ordena múltiples arrays, o arrays multidimensionales
array_pad — Rellena un array a la longitud especificada con un valor array_pop — Extrae el último elemento del final del array array_product — Calcula el producto de los valores de un array array_push — Inserta uno o más elementos al final de un array array_rand — Selecciona una o más entradas aleatorias de un array array_reduce — Reduce iterativamente una matriz a un solo valor usando una función llamada de retorno array_replace_recursive — Reemplaza los elementos de los arrays pasados al primer array de forma recursiva array_replace — Reemplaza los elementos de los arrays pasados en el primer array array_reverse — Devuelve un array con los elementos en orden inverso array_search — Busca un valor determinado en un array y devuelve la clave correspondiente en caso de éxito array_shift — Quita un elemento del principio del array array_slice — Extrae una parte de un array array_splice — Elimina una porción del array y la reemplaza con algo array_sum — Calcula la suma de los valores en un array array_udiff_assoc — Computa la diferencia entre arrays con una comprobación de indices adicional, compara la información mediante una función de llamada de retorno array_udiff_uassoc — Computa la diferencia entre arrays con una verificación de índices adicional, compara la información y los índices mediante una función de llamada de retorno array_udiff — Computa la diferencia entre arrays, usando una llamada de retorno para la comparación de datos array_uintersect_assoc — Computa la intersección de arrays con una comprobación de índices adicional, compara la información mediante una función de llamada de retorno array_uintersect_uassoc — Computa la intersección de arrays con una comprobación de índices adicional, compara la
información y los índices mediante funciones de llamada de retorno array_uintersect — Computa una intersección de arrays, compara la información mediante una función de llamada de retorno array_unique — Elimina valores duplicados de un array array_unshift — Añadir al inicio de un array uno a más elementos array_values — Devuelve todos los valores de un array array_walk_recursive — Aplicar una función de usuario recursivamente a cada miembro de un array array_walk — Aplicar una función de usuario a cada miembro de un array array — Crea un array arsort — Ordena un array en orden inverso y mantiene la asociación de índices asort — Ordena un array y mantiene la asociación de índices compact — Crear un array que contiene variables y sus valores count — Cuenta todos los elementos de un array o en un objeto current — Devuelve el elemento actual en un array each — Devolver el par clave/valor actual de un array y avanzar el cursor del array end — Establece el puntero intero de un array a su último elemento extract — Importar variables a la tabla de símbolos actual desde un array in_array — Comprueba si un valor existe en un array usando comparación flexible key_exists — Alias de array_key_exists key — Obtiene una clave de un array krsort — Ordena un array por clave en orden inverso ksort — Ordena un array por clave list — Asigna variables como si fuera un array natcasesort — Ordenar un array usando un algoritmo de "orden natural" insensible a mayúsculas-minúsculas
natsort — Ordena un array usando un algoritmo de "orden natural" next — Avanza el puntero interno de un array pos — Alias de current prev — Rebobina el puntero interno del array range — Crear un array que contiene un rango de elementos reset — Establece el puntero interno de un array a su primer elemento rsort — Ordena un array en orden inverso shuffle — Mezcla un array sizeof — Alias de count sort — Ordena un array uasort — Ordena un array con una función de comparación definida por el usuario y mantiene la asociación de índices uksort — Ordena un array según sus claves usando una función de comparación definida por el usuario usort — Ordena un array según sus valores usando una función de comparación definida por el usuario Funciones de ficheros basename — Devuelve el componente de nombre de rastreo de la ruta chgrp — Cambia el grupo del archivo chmod — Cambia el modo de archivo chown — Cambia el propietario del archivo clearstatcache — Limpia la caché de estado de un archivo copy — Copia archivos delete — Véase unlink o unset dirname — Devuelve el directorio padre de la ruta disk_free_space — Devuelve el espacio disponible de un sistema de archivos o partición de disco disk_total_space — Devuelve el tamaño total de un sistema de archivos o partición de disco diskfreespace — Alias de disk_free_space fclose — Cierra un puntero a un archivo abierto
feof — Comprueba si el puntero a un archivo está al final del archivo fflush — Vuelca la salida a un archivo fgetc — Obtiene un carácter de un puntero a un archivo fgetcsv — Obtiene una línea del puntero a un archivo y la examina para tratar campos CSV fgets — Obtiene una línea desde el puntero a un fichero fgetss — Obtiene un línea desde un puntero a un archivo y elimina las etiquetas HTML file_exists — Comprueba si existe un fichero o directorio file_get_contents — Transmite un fichero entero a una cadena file_put_contents — Escribe una cadena a un fichero file — Transfiere un fichero completo a un array fileatime — Obtiene el momento del último acceso a un archivo filectime — Obtiene el momento del último cambio del i-nodo de un archivo filegroup — Obtiene el grupo de un archivo fileinode — Obtiene el i-nodo del archivo filemtime — Obtiene el momento de la última modificación de un archivo fileowner — Obtiene el propietario de un archivo fileperms — Obtiene los permisos de un archivo filesize — Obtiene el tamaño de un fichero filetype — Obtiene el tipo de fichero flock — Bloqueo de archivos asesorado portable fnmatch — Compara un nombre de fichero con un patrón fopen — Abre un fichero o una URL fpassthru — Escribe toda la información restante de un puntero a un archivo fputcsv — Da formato a una línea como CSV y la escribe en un puntero a un archivo fputs — Alias de fwrite fread — Lectura de un fichero en modo binario seguro fscanf — Analiza la entrada desde un archivo de acuerdo a un formato fseek — Busca sobre un puntero a un fichero
fstat — Obtiene información acerca de un archivo usando un puntero al archivo abierto ftell — Devuelve la posición de lectura/escritura actual del puntero a un fichero ftruncate — Trunca un archivo a una longitud dada fwrite — Escritura de un archivo en modo binario seguro glob — Busca coincidencias de nombres de ruta con un patrón is_dir — Indica si el nombre de archivo es un directorio is_executable — Indica si el nombre de archivo es ejecutable is_file — Indica si el nombre de fichero es un fichero normal is_link — Indica si el nombre de archivo es un enlace simbólico is_readable — Indica si un fichero existe y es legible is_uploaded_file — Indica si el archivo fue subido mediante HTTP POST is_writable — Indica si un archivo existe y es escribible is_writeable — Alias de is_writable lchgrp — Cambia el grupo de un enlace simbólico lchown — Cambia el propietario de un enlace simbólico link — Crea un enlace duro linkinfo — Obtiene información acerca de un enlace lstat — Da información acerca de un archivo o enlace simbólico mkdir — Crea un directorio move_uploaded_file — Mueve un archivo subido a una nueva ubicación parse_ini_file — Analiza un archivo de configuración parse_ini_string — Analiza una cadena de configuración pathinfo — Devuelve información acerca de la ruta de un fichero pclose — Cierra un proceso de un puntero a un archivo popen — Abre un proceso de un puntero a un archivo readfile — Realizar la salida de un fichero readlink — Devuelve el objetivo de un enlace simbólico realpath_cache_get — Obtiene las entradas de la caché de la ruta real realpath_cache_size — Obtiene el tamaño de la caché de la ruta real
realpath — Devuelve el nombre de la ruta absoluta canonizado rename — Renombra un archivo o directorio rewind — Rebobina la posción de un puntero a un archivo rmdir — Elimina un directorio set_file_buffer — Alias de stream_set_write_buffer stat — Da información acerca de un fichero symlink — Crea un enlace simbólico tempnam — Crea un archivo con un nombre de archivo único tmpfile — Crea un archivo temporal touch — Establece el momento de acceso y modificación de un archivo umask — Cambia la máscara de usuario actual unlink — Borra un archivo Funciones matemáticas abs — Valor absoluto acos — Arco coseno acosh — Arco coseno hiperbólico asin — Arco seno asinh — Arco seno hiperbólico atan2 — Arco tangente de dos variables atan — Arco tangente atanh — Arco tangente hiperbólica base_convert — Convertir un número entre bases arbitrarias bindec — Binario a decimal ceil — Redondear fracciones hacia arriba cos — Coseno cosh — Coseno hiperbólico decbin — Decimal a binario dechex — Decimal a hexadecimal decoct — Decimal a octal deg2rad — Convierte el número en grados a su equivalente en radianes exp — Calcula la exponencial de e
expm1 — Devuelve exp(numero)-1, calculado de tal forma que no pierde precisión incluso cuando el valor del numero se aproxima a cero. floor — Redondear fracciones hacia abajo fmod — Devuelve el residuo de punto flotante (módulo) de la división de los argumentos getrandmax — Mostrar el mayor valor aleatorio posible hexdec — Hexadecimal a decimal hypot — Calcula la longitud de la hipotenusa de un triángulo de ángulo recto is_finite — Encuentra si un valor es un número finito legal is_infinite — Encuentra si un valor es infinito is_nan — Encuentra si un valor no es un número lcg_value — Generador lineal congruente combinado log10 — Logaritmo en base 10 log1p — Devuelve log(1 + numero), calculado de tal forma que no pierde precisión incluso cuando el valor del numero se aproxima a cero. log — Logaritmo natural max — Encontrar el valor más alto min — Encontrar el valor más bajo mt_getrandmax — Mostrar el mayor valor aleatorio posible mt_rand — Genera un mejor número entero aleatorio mt_srand — Genera el mejor número aleatorio a partir de una semilla octdec — Octal a decimal pi — Obtener valor de pi pow — Expresión exponencial rad2deg — Convierte el número en radianes a su equivalente en grados rand — Genera un número entero aleatorio round — Redondea un float sin — Seno sinh — Seno hiperbólico sqrt — Raíz cuadrada srand — Genera un número aleatorio a partir de una semilla
tan — Tangente tanh — Tangente hiperbólica Funciones de bases de datos mysql_affected_rows — Obtiene el número de filas afectadas en la anterior operación de MySQL mysql_client_encoding — Devuelve el nombre del conjunto de caracteres mysql_close — Cierra una conexión de MySQL mysql_connect — Abre una conexión al servidor MySQL mysql_create_db — Crea una base de datos MySQL mysql_data_seek — Mueve el puntero de resultados interno mysql_db_name — Recupera el nombre de la base de datos desde una llamada a mysql_list_dbs mysql_db_query — Selecciona una base de datos y ejecuta una consulta sobre la misma mysql_drop_db — Elimina (DROP) una base de datos MySQL mysql_errno — Devuelve el valor numérico del mensaje de error de la última operación MySQL mysql_error — Devuelve el texto del mensaje de error de la operación MySQL anterior mysql_escape_string — Escapa una cadena para ser usada en mysql_query mysql_fetch_array — Recupera una fila de resultados como un array asociativo, un array numérico o como ambos mysql_fetch_assoc — Recupera una fila de resultados como un array asociativo mysql_fetch_field — Obtiene la información de una columna de un resultado y la devuelve como un objeto mysql_fetch_lengths — Obtiene la longitud de cada salida en un resultado mysql_fetch_object — Recupera una fila de resultados como un objeto mysql_fetch_row — Obtiene una fila de resultados como un array numérico
mysql_field_flags — Obtiene las banderas asociadas al campo especificado de un resultado mysql_field_len — Devuelve la longitud del campo especificado mysql_field_name — Obtiene el nombre del campo especificado de un resultado mysql_field_seek — Establece el puntero del resultado en un índice de campo específicado mysql_field_table — Obtiene el nombre de la tabla en la que está el campo especificado mysql_field_type — Obtiene el tipo del campo especificado de un resultado mysql_free_result — Libera la memoria del resultado mysql_get_client_info — Obtiene información del cliente MySQL mysql_get_host_info — Obtener información del anfitrión de MySQL mysql_get_proto_info — Obtener información del protocolo MySQL mysql_get_server_info — Obtiene información del servidor MySQL mysql_info — Obtiene información sobre la consulta más reciente mysql_insert_id — Obtiene el ID generado en la última consulta mysql_list_dbs — Lista las bases de datos disponibles en un servidor MySQL mysql_list_fields — Lista los campos de una tabla de MySQL mysql_list_processes — Lista los procesos de MySQL mysql_list_tables — Lista las tablas de una base de datos MySQL mysql_num_fields — Obtiene el número de campos de un resultado mysql_num_rows — Obtener el número de filas de un conjunto de resultados mysql_pconnect — Abre una conexión persistente a un servidor MySQL
mysql_ping — Efectuar un chequeo de respuesta (ping) sobre una conexión al servidor o reconectarse si no hay conexión mysql_query — Enviar una consulta MySQL mysql_real_escape_string — Escapa caracteres especiales en un string para su uso en una sentencia SQL mysql_result — Obtener datos de resultado mysql_select_db — Seleccionar una base de datos MySQL mysql_set_charset — Establece el conjunto de caracteres del cliente mysql_stat — Obtiene el estado actual del sistema mysql_tablename — Obtiene el nombre de la tabla de un campo mysql_thread_id — Devuelve el ID del hilo actual mysql_unbuffered_query — Envía una consulta SQL a MySQL, sin recuperar ni almacenar en búfer las filas de resultados Funciones de red checkdnsrr — Comprueba registros DNS correspondientes a un nombre de host de Internet dado o dirección IP closelog — Cerrar conexión al log del sistema define_syslog_variables — Initializes all syslog related variables dns_check_record — Alias de checkdnsrr dns_get_mx — Alias de getmxrr dns_get_record — Fetch DNS Resource Records associated with a hostname fsockopen — Abre una conexión vía sockets a Internet o a un dominio Unix gethostbyaddr — Obtener el nombre del host de Internet correspondiente a una dirección IP dada gethostbyname — Obtener la dirección IPv4 que corresponde a un nombre de host de Internet dado gethostbynamel — Obtener una lista de direcciones IPv4 que corresponde a un nombre de host de Internet dado gethostname — Obtiene el nombre de host
getmxrr — Get MX records corresponding to a given Internet host name getprotobyname — Obtener el número de protocolo asociado con el nombre de protocolo getprotobynumber — Obtiene el nombre de protocolo asociado con un número de protocolo getservbyname — Obtener el número de puerto asociado con un servicio y protocolo de Internet getservbyport — Obtener el servicio de Internet que corresponde con el puerto y protocolo header_register_callback — Llamar a una función de cabecera header_remove — Elimina encabezados previamente establecidos header — Enviar encabezado sin formato HTTP headers_list — Devuelve una lista de encabezados de respuesta enviados (o listos para enviar) headers_sent — Comprueba si o donde han enviado cabeceras http_response_code — Get or Set the HTTP response code inet_ntop — Converts a packed internet address to a human readable representation inet_pton — Converts a human readable IP address to its packed in_addr representation ip2long — Convierte una cadena que contiene una dirección con puntos del Protocolo de Internet (IPv4) en una dirección apropiada long2ip — Convierte una dirección de red (IPv4) en una cadena de texto en formato con puntos estándar de internet openlog — Open connection to system logger pfsockopen — Abre Internet persistente o conexión de socket de dominio Unix setcookie — Enviar una cookie setrawcookie — Enviar una cookie sin codificar su valor socket_get_status — Alias de stream_get_meta_data socket_set_blocking — Alias de stream_set_blocking socket_set_timeout — Alias de stream_set_timeout
syslog — Genera un mensaje log de sistema Algunas bibliotecas adicionales.
requieren
Todas las funciones de documentación de PHP.
la
instalación
biblioteca
de
componentes
están comentadas
en
la
VII.
CONCLUSIÓN
Con este módulo de programación de interfaces web II cerramos el ciclo que se inició en programación de interfaces web I, donde empezamos estudiando los atributos y conceptos del html5 y su hoja de estilos css3, para programar nuestras primeras páginas web, implementando técnicas de JavaScript y jquery, obteniendo en aquel modulo un grato resultado al crear nuestra primer página estática lista para publicarla. Ya en este módulo iniciamos con el estudio de PHP como script, haciendo uso de la herramienta xampp, que nos ayudó a montar un servidor en nuestras maquinas, corriendo apache esencial para el montaje de páginas web y MySQL, para el manejo de base de datos. Fue una gran experiencia el conectar de forma entendible y clara por primera vez nuestras bases de datos, así como alimentarlas, modificarlas y eliminarlas probando todas las funcionalidades aprendidas en el pasado. Concluir con la creación de un proyecto de altas y bajas fue una experiencia maravillosa, ya que implementamos todos los conocimientos de base de datos estudiados, y aprendimos a conectarnos y desconectarnos, ingresar datos y eliminarlos, así como arrojarlos en pantalla por medio del script de PHP que es interpretado por medio del servidor. Concluyendo, la programación en esta materia fue el pan de cada dia ya que codificamos a diario avanzando de a poco en poco hasta conseguir nuestro objetivo planteado, la obtención de un nuevo conocimiento o el enlace de todo lo que ya sabíamos mas no aviamos aplicado, fue reforzar y aprender, las constantes de este módulo.