• No se han encontrado resultados

Programando Aplicaciones Web con Bases de Datos y Perl

N/A
N/A
Protected

Academic year: 2021

Share "Programando Aplicaciones Web con Bases de Datos y Perl"

Copied!
11
0
0

Texto completo

(1)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

1

Sé diferente, intégrate…

Autor: Orlando Gutiérrez

Fecha: 01/01/2010

Mca051

Programando Aplicaciones Web con

Bases de Datos y Perl

(2)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

ÍNDICE

Lección1 Arquitectura de Bases de Datos en WEB ... 3

Lección2 Configurando usuarios para la WEB ... 3

Lección3 Operación de Bases de Datos en WEB ... 3

Lección4 Pasos para consultar una Bases de Datos en WEB ... 4

Lección5 Estableciendo y cerrando una conexión... 4

Lección6 Consultando la Base de Datos ... 4

Lección7 Manipulando los datos de la consulta ... 4

Lección8 Mostrando los resultados de la consulta al usuario final ... 5

Lección9 API DBI ... 5

Lección11 Módulo de PERL con PostgreSQL ... 7

Lección12 Comandos acceso a Bases de Datos embebidos en scripts PERL ... 7

Lección13 Seguridad en bases de datos WEB ... 7

Lección14 Modelo de abstracción de datos ... 7

Lección15 Implementando autenticación combinando PERL y Bases de Datos ... 7

Lección16 Control de acceso ... 8

Lección17 Conceptos de autenticación básica ... 8

Lección18 Autenticación básica en PERL ... 8

Lección19 Autenticación en Apache con Base de Datos ... 8

Lección20 Transacciones seguras con PHP y Base de Datos ... 9

Lección21 Encriptación en PERL... 9

Lección22 PERL y Bases de Datos en proyectos de gran escala... 10

Lección23 Desarrollo multi-capa, separando la lógica de negocios del contenido de la página Web ... 10

Lección24 Manejando errores generados por las Bases de datos desde PERL ... 10

(3)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

3

LECCIÓN1 ARQUITECTURA DE BASES DE DATOS EN WEB

ARQUITECTURA CLIENTE SERVIDOR ARQUITECTURA WEB CON PERL + BD

LECCIÓN2 CONFIGURANDO USUARIOS PARA LA WEB

CONFIGURANDO USUARIOS PARA WEB

• PROGRAMÁTICAMENTE A TRAVÉS DE COMANDOS GRANT Y REVOKE

• PERMISOLOGÍA DIRECTA EN MYSQL O POSTGRESQL • COMMANDO DE CONEXIÓN CON USUARIO, PASSWORD Y BASE DE DATOS

COMANDOS GRANT Y REVOKE • GRANT privilegios [columnas] ON elemento

TO usuario

[WITH GRANT OPTION] • REVOKE privilegios [(columnas)] ON elemento

FROM usuario TIPOS DE PRIVILEGIOS

SELECT (TABLAS Y COLUMNAS)

INSERT (TABLAS Y COLUMNAS)

UPDATE (TABLAS Y COLUMNAS)

DELETE (TABLAS) • INDEX (TABLAS) • ALTER (TABLAS)

CREATE (BASES DE DATOS Y TABLAS)

DROP (BASES DE DATOS Y TABLAS) EJEMPLO DE GRANT Y REVOKE • GRANT ALL

ON *

TO ADMIN WITH GRANT OPTION

• REVOKE ALL

ON * FROM ADMIN UN USUARIO WEB

• PRIVILEGIOS DE SELECT, INSERT, UPDATE, DELETE

SOBRE UNA BASE DE DATOS

• GRANT SELECT , INSERT, UPDATE, DELETE

ON SISTORDCOMPRA.*

TO E022

LECCIÓN3 OPERACIÓN DE BASES DE DATOS EN WEB

OPERACIONES DE BASES DE DATOS EN WEB • INSERTANDO, INSERT COMMAND

INSERT INTO tabla [(cola, colb, …)] VALUES (vala, valb,…)

• SELECCIONANDO, SELECT COMMAND • ACTUALIZANDO, UPDATE COMMAND • ELIMINANDO, DELETE COMMAND

(4)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

LECCIÓN4 PASOS PARA CONSULTAR UNA BASES DE DATOS EN WEB

CONSULTA BASES DE DATOS EN WEB

• PROCESAR LOS DATOS DE LA CONSULTA (EVITAR ERRORES U OPERACIONES SOSPECHOSAS) • CONEXIÓN BASE DE DATOS

• EJECUCIÓN COMANDOS (“QUERIES”) • PROCESAMIENTO DEL RESULTADO (ESTILO CURSOR)

• MOSTRAR LOS RESULTADOS DE LA CONSULTA AL USUARIO

LECCIÓN5 ESTABLECIENDO Y CERRANDO UNA CONEXIÓN

CONEXIONES

• EN PERL EL ACCESO A LAS BASES DE DATOS SE REALIZA A TRAVÉS DE MÓDULOS (DBI)

• EL ACCESO A LAS BASES DE DATOS SE LOGRA A TRAVÉS DE MÉTODOS DISPONIBLES EN EL MODULO

• EL MÓDULO OFRECE UN CONJUNTO DE MÉTODOS (EJEMPLO connect disconnect )

OBJETOS PARA MANEJADORES DE B.D

• ENCAPSULAN UNA CONEXION DE BASE DE DATOS • POR CONVENCIÓN SE DECLARAN COMO $dbh • DBH ES LA NOMENCLATURA DE DATA BASE HANDLER

CONNECT

DISCONNECT

• METODO prepare CON UN COMANDO SQL DEVUELVE

UN OBJETO UTILIZADO PARA EJECUTAR LOS COMANDOS

LECCIÓN6 CONSULTANDO LA BASE DE DATOS

CONSULTANDO LA BASE DE DATOS

• SE REALIZA A TRAVÉS DE LOS OBJETOS STATEMENT, DEVUELTO POR EL MÉTODO prepare

• $sth = $dbh->prepare (“SELECT * FROM gala”) • EL COMANDO execute , EJECUTA EL COMANDO • $sth->execute()

• LOS OBJETOS STH SON CURSORES, OFRECEN CURSORES • STH ES LA ABREVIATURA DE Statement Handler

LECCIÓN7 MANIPULANDO LOS DATOS DE LA CONSULTA

CURSORES

• CONCEPTO DE CURSOR DE BASE DE DATOS • LOS OBJETOS STE SON CURSORES

• @reg=$sth->fetchrow_array() DEVUELVE EN UN ARREGLO EL PRIMER REGISTRO DE LA CONSULTA

Y AVANZA AL SIGUIENTE

• LOS OTROS MÉTODOS DISPONIBLES SON fetchrow_arrayref

(5)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

5

PROCESO DE OBTENCIÓN DE DATOS

• 1) PREPARACIÓN : MÉTODO prepare CON EL COMANDO

SQL. OBJETO $dbh

$sth = $dbh->prepare(“SELECT * FROM gala”);

• 2) EJECUCUCIÓN ; MÉTODO execute DEL OBJETO $sts

$sth -> execute();

• 3) PROCESAMIENTO DE RECURSOS ESTILO CURSOR

while($arr = $sth->fetchrow_array()) {..}

• 4) LIBERACIÓN DE RECURSOS CON EL MÉTODO finish.

$sth -> finish();

LECCIÓN8 MOSTRANDO LOS RESULTADOS DE LA CONSULTA AL USUARIO FINAL

MOSTRANDO RESULTADOS

• UNA VEZ ALMACENADOS EN VARIABLES PERL, IGUAL A CUALQUIER SCRIPT

• RECORDAR FORMATEO

• COMBINAR TEXTO HTML CON RESULTADOS DE

CONSULTAS O COMANDOS DE BASE DE DATOS DENTRO DE PERL

LECCIÓN9 API DBI

API DBI

• DBI DATA BASE INTERFACE

• ES UN API PARA TRABAJAR CON BASE DE DATOS • ES UN MÓDULO DE PERL

• OFRECE UN CONJUNTO DE FUNCIONES, CONVENCIONES Y VARIABLES

• API STANDARD PARA UNIFICAR LAS INTERFACES DE BASES DE DATOS EN PERL

• INDEPENDIENTE DEL MANEJADOR DE BASE DE DATOS (APLICA PARA MYSQL Y POSTGRESQL, EL DRIVER

INSTALADO ES EL QUE HACE LA DIFERENCIA ESPECIFICACIONES APIDB

• http://ruby-dbi.rubyforge.org/DBI_SPEC.html

• DOS MÓDULOS : DBD y DBI

• MÓDULO DBD CONSTANTE API_VERSION

FUNCIONES DEL MÓDULO DBI

DBI.connect DBI.available_drivers DBI.data_sources( driver ) DBI.disconnect_all( driver=nil ) DBI.trace(mode=nil, output=nil) CLASE DBI::HANDLE • Class DBI::Handle

(6)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

• CLASE ABSTRACTA BASE PARA LAS CLASES DriverHandle, DatabaseHandle, StatementHandle. • SE OBTIENE CON EL MÉTODO connect de DBI

ES EL CORE DE LA INTEGRACIÓN CON BD EN PERL

CLASE DBI::DATABASEHANDLE

• connected? (PROPIEDADM EL RESTO SON MÉTODOS) • disconnect()

• prepare( stmt )

• execute( stmt, *bindvars )

• do( stmt, *bindvars ) POR LO GENERAL SE EJECUTAN LOS COMANDOS QUE NO SON SELECT CON ESTA

INSTRUCCIÓN • select_one( stmt, *bindvars) • select_all( stmt, *bindvars) • tables • columns( table ) • ping • quote( value ) • commit • rollback • transaction CLASE DBI::DATABASESTATEMENTHANDLE • bind_param( param, value, attribs=nil ) • execute( *bindvars ) • finish • cancel • column_names • column_info • rows • fetchable? • fetch

• each {|row| aBlock } • fetch_array

• fetch_hash • fetch_many( cnt ) • fetch_all

• fetch_scroll( direction, offset=1 ) Lección10 Módulo de PERL con MySQL DBD

• DBD DATA BASE DRIVER • SE COMBINA CON EL DBI

• ES EL QUE REALIZA LA CONEXIÓN FÍSICA CON LA BD • EL DBI ES LÓGICO

• DE DEBE DISPONER DEL DRIVE PARTICULAR PARA CADA MANEJADOR. EL DRIVER SI ES E PERL DEBE SOPORTAR DBI

DRIVER DE PERL CON MYSQL (DBD::mysql) • IMPLEMENTACIÓN DEL API DBI

• DESCARGABLE DE LA PÁGINA DE MYSQL • LA CLASE ES DBD::mysql

• EXISTEN OTRAS OPCIONES EN LA PÁGINA DE MYSQL

(7)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

7

LECCIÓN11 MÓDULO DE PERL CON POSTGRESQL

DRIVER DE PERL CON POSTGRESQL (DBD::Pg)

DOCUMENTACIÓN http://search.cpan.org/dist/DBD-Pg/Pg.pmURL

ULTIMA VERSIÓN DBD-Pg-2.7.2.tar.gz

DESCARGAS http://www.postgresql.org/download/

LECCIÓN12 COMANDOS ACCESO A BASES DE DATOS EMBEBIDOS EN SCRIPTS PERL

COMANDOS EMBEBIDOS

• UNA VEZ IMPORTADO EL MODULO APIDB E INSTANCIADO EL OBJETO, SE PUEDE EJECUTAR CUALQUIER FUNCIÓN DE LA BASE DE DATOS COMO CUALQUIER OTRA FUNCIÓN DE PERL

• ESTILO PROGRAMACIÓN DE CURSORES

LECCIÓN13 SEGURIDAD EN BASES DE DATOS WEB

SEGURIDAD EN BASES DE DATOS WEB

• USUARIOS WEB, NO DEBERÍAN TENER PERMISOLOGÍA GRANT • SELECT PARA TABLAS DE CATÁLOGOS

• INSERT PARA TABLAS DE ÓRDENES DE COMPRAS • VALIDAR TODOS LOS DATOS ANTES DE EJECUTAR LOS COMANDOS DE BASE DE DATOS

• SSL CUANDO SE TRANSMITAN PASSWORDS

LECCIÓN14 MODELO DE ABSTRACCIÓN DE DATOS

MODELO DE ABSTRACCIÓN DE DATOS

• SEPARACIÓN CAPA DE DATOS DE LA LÓGICA DEL NEGOCIO Y DE LA PRESENTACIÓN

• FUNCIONES (API) QUE ENCAPSULAN EN MANEJADOR • CAMBIOS INMEDIATOS AL CAMBIAR LA BASE DE DATOS

• PROGRAMADORES WEB NO DEBERÍAN CONOCER TECNOLOGÍA ASOCIADA CAPA DE DATOS

•DETALLES DE MANEJADOR

• SOPORTE MÚLTIPLES MANEJADORES VS. TECNOLOGÍA ODBC • PERL SOPORTA LA MAYORÍA DE LOS MANEJADORES COMERCIALES

LECCIÓN15 IMPLEMENTANDO AUTENTICACIÓN COMBINANDO PERL Y BASES DE DATOS

AUTENTICACIÓN PERL + BASES DE DATOS •IDENTIFICANDO LOS VISITANTES A LAS PÁGINAS WEB

• IMPLEMENTANDO EL CONTROL DE ACCESO

• DIFERENCIAS ENTRE AUTENTICACIÓN Y AUTORIZACIÓN • AUTENTICACIÓN BÁSICA

• AUTENTICACIÓN EN EL SERVIDOR WEB • AUTENTICACIÓN PERSONALIZADA

IDENTIFICANDO VISITANTES

• REGISTRANDO INFORMACIÓN DEL USUARIO • COOKIES (LADO DEL CLIENTE)

• SESSIONES

(8)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

LECCIÓN16 CONTROL DE ACCESO

CONTROL DE ACCESO, SENCILLO HTML • CAMPOS USERNAME, PASSWORD • TAGS HTML CAMPOS PASSWORD <input type = password …> • CÓDIGO PERL HARD-CODE

CONTROL DE ACCCESO, BASE DE DATOS • CAMPOS USERNAME, PASSWORD • ALMACENAMIENTO EN BASE DE DATOS • ALMACENAMIENTO ENCRIPTADO INSERT INTO usuarios VALUES (‘usuario’, password(‘clave’))

• FUNCIONES CIFRADO (ENCRIPTAMIENTO) LIBRERÍA PERL

LECCIÓN17 CONCEPTOS DE AUTENTICACIÓN BÁSICA

AUTENTICACIÓN BÁSICA • OFRECIDA POR HTTP

• SÓLO SE SOLICITA UNA VEZ Y MIENTRAS EL NAVEGADOR SE ENCUENTRE ACTIVO FUNCIONA. NO LA SOLICITA PÁGINA POR PÁGINA

• ESTOS MECANISMOS PUEDEN SER LEVANTADOS DIRECTAMENTE EN EL SERVIDOR O A TRAVÉS DE PERL (INTERFAZ CGI)

IMPLEMENTACIÓN AUTENTICACIÓN BÁSICA • OFRECIDA POR HTTP

• HTTP 1.1 , AUTENTICACIÓN DIGEST

• AUTHENTICATION DIGEST, MD5 (SOPORTADO POR MUCHOS SERVIDORES, PERO NO POR NAVEGADORES)

LECCIÓN18 AUTENTICACIÓN BÁSICA EN PERL

AUTENTICACIÓN BÁSICA EN PERL

• EXISTEN MÓDULOS PARA IMPLEMANTAR MD5 CON PERL http://sourceforge.net/projects/perl-md5-login/

LIBRERÍAS DE PERL

• MIME::Base64; • Crypt::OpenSSL::DSA; • Digest::SHA1 qw(sha1);

• UN CONJUNTO DE LIBERÍAS Y MÓDULOS SE ENCUENTRA DISPONBIBLE EN

http://www.perl.com/CPAN/modules/by-category/14_Security_and_Encryption/Authen/

AUTENTICACIÓN DIGEST EN PERL

LECCIÓN19 AUTENTICACIÓN EN APACHE CON BASE DE DATOS

AUTENTICACIÓN BÁSICA APACHE • FUERA DE PERL

• DEPENDIENTE DEL SERVIDOR WEB • ARCHIVOS .htaccess

(9)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

9

LECCIÓN20 TRANSACCIONES SEGURAS CON PHP Y BASE DE DATOS

TRANSACCIONES WEB TRANSACCIONES SEGURAS •SSL (SECURITY SOCKET LAYERS) • FIRMAS DIGITALES (DSL) • ENCRIPTACIÓN EN PERL

• ENCRIPTACIÓN EN BASES DE DATOS • SEGURIDAD EN WEB

LECCIÓN21 ENCRIPTACIÓN EN PERL

SERVICIOS DE CIFRADO (ENCRIPTACIÓN) EN PERL • HMAC

• MD5 • SHA

• UN CONJUNTO DE LIBERÍAS Y MÓDULOS SE ENCUENTRA DISPONBIBLE EN

http://www.perl.com/CPAN/modules/

by- category/14_Security_and_Encryption/Authen HMAC EN PERL

• hmac -- Keyed-Hashing for Message Authentication • Implementa el algoritmo HMAC descrito por RFC 2104. • MODULO Digest::SHA1

• INTERFAZ Perl AL ALORITMO SHA-1 • MÉTODOS: new() reset() clone() add() addfile() add_bits() digest() hexdigest() b64digest() MD5 EN PERL

• md5 -- MD5 message digest algorithm

• Implementa la interfaz RSA‘ al algoritmo de procesamiento de mensajes MD5 (Internet RFC 1321)

• MODULO Digest:MD1

• INTERFAZ Perl AL ALORITMO MD5 • MÉTODOS: new() reset() clone() add() addfile() add_bits() digest() hexdigest() b64digest() SHA-1 EN PERL

• sha -- SHA-1 message digest algorithm

• Implementa la interfaz NIST al algoritmo de hashing seguro SHA-1 (Internet RFC 1321)

• MODULO Digest::SHA1

• INTERFAZ Perl AL ALORITMO SHA-1 • MÉTODOS:

new() reset()

(10)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

clone() add() addfile() add_bits() digest() hexdigest() b64digest()

LECCIÓN22 PERL Y BASES DE DATOS EN PROYECTOS DE GRAN ESCALA

PROYECTOS GRAN ESCALA • DISEÑO MODULAR • “SOFTWARE” MULTI-CAPAS

• DESARROLLO ORIENTADO POR OBJETOS • CAPA DE DATOS (FACHADA CON UN DBMS) • CAPA DE LÓGICA (MODULOS PERL, UNA FACHADA DE INTERFAZ ÚNICA)

• CAPA DE PRESENTACIÓN, DISEÑO GRÁFICO EN HTML

PASOS DESARROLLO, METODOLOGÍA

• APLICAR PRINCIPIOS DE INGENIERÍA DE “SOFTWARE” • REALIZAR LA PLANIFICACIÓN DEL PROYECTO Y EL CONTROL DEL MISMO

• REUTILIZACIÓN DEL CÓDIGO • ESCRITURA DE CÓDIGO MANTENIBLE • IMPLEMENTAR CONTROL DE VERSIONES • ESCOGER UN AMBIENTE DE DESARROLLO • DOCUMENTAR EL PROYECTO

• DESARROLLAR PROTOTÍPICO E INCREMENTAL • SEPARAR AL MENOS EN TRES CAPAS

• OPTIMIZAR EL CÓDIGO IDE´s PARA PERL

IDE PARA ECLIPSE

http://e-p-i-c.sourceforge.net/

EDITOR DE TEXTOS PARA PERL

http://sourceforge.net/projects/kpad/

IDE PARA WINDOWS

http://sourceforge.net/projects/open-perl-ide

Perl IDE and Editor for Windows

http://www.perl-express.com/

LECCIÓN23 DESARROLLO MULTI-CAPA, SEPARANDO LA LÓGICA DE NEGOCIOS DEL CONTENIDO DE LA PÁGINA WEB

EVOLUCIÓN (“STAND-ALONE”) EVOLUCIÓN (“CLIENT-SERVER”) EVOLUCIÓN (“THREE-TIER”) EVOLUCIÓN (“MULTI-TIER”)

LECCIÓN24 MANEJANDO ERRORES GENERADOS POR LAS BASES DE DATOS DESDE PERL

EXCEPCIONES DEL API DBI DE PERL • SON CLASES

(11)

G A L A

Programando Aplicaciones Web con Bases de Datos y Perl

11

• Warning < RuntimeError • Error < RuntimeError • InterfaceError < Error • NotImplementedError < InterfaceError • DatabaseError < Error

EXCEPCIONES DEL API DBI , BASE DE DATOS • SON CLASES • Warning < RuntimeError • Error < RuntimeError • InterfaceError < Error • NotImplementedError < InterfaceError • DatabaseError < Error

LECCIÓN25 EJEMPLOS DE APLICACIONES

EJEMPLOS APLICACIONES

• CARRO DE COMPRAS (E-COMMERCE) • ADMINISTRADOR DE CONTENIDOS • PAQUETE DE E-MAIL EN WEB • CONSTRUYENDO FOROS EN WEB

Referencias

Documento similar

U-Ranking cuenta con la colaboración del Ministe- rio de Universidades, al permitirnos el acceso al Sistema Integrado de Información Universitaria (SIIU). El SIIU es

El valor agregado 6 del indicador por universidad se pre- senta en una escala de 0 (mínimo valor obtenido por una universidad del sistema en ese indicador) a 100 (correspondiente

El segundo paso es elegir la comunidad autónoma o comunidades que se contemplan como lugares en los que cursar los estudios. Para ello, el usuario debe marcar las elegidas

Para definir el comportamiento de una Casa Inteligente, es factible la utilización del modelo de reglas ECA (evento-condición-acción), ampliamente utilizado en el

Cuando se realiza una revisión integrativa entorno a un tema como el de la sintomatología presente en los pacientes con enfermedad oncológica avanzada, que motivan el

BASES DE DATOS (IG18 Semipresencial) Diseño Físico de Bases de Datos Relacionales.. Lledó Museros /

Introducción a las Bases de Datos: Sistemas de Bases de Datos frente a Sistemas de Ficheros.. Lledó Museros /

Esto nos deja claro que, dentro de este tipo de terapias, son el Qigong y el Tai Chi las que muestran unos resultados más prometedores a la hora de establecerse