martes, 29 de mayo de 2012

UNIDAD 2 "ENTORNO DE PROGRAMACION"

UNIDAD 2

"ENTORNO DE PROGRAMACION"

2.0.-ENTORNO DE PROGRAMACION

Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Los IDEs pueden ser aplicaciones por sí solas o pueden ser parte de aplicaciones existentes. El lenguaje Visual Basic, por ejemplo, puede ser usado dentro de las aplicaciones de Microsoft Office, lo que hace posible escribir sentencias Visual Basic en forma de macros para Microsoft Word.
Los IDE proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación tales como C++, PHP, Python, Java, C#, Delphi, Visual Basic, etc. En algunos lenguajes, un IDE puede funcionar como un sistema en tiempo de ejecución, en donde se permite utilizar el lenguaje de programación en forma interactiva, sin necesidad de trabajo orientado a archivos de texto, como es el caso de Smalltalk u Objective-C.

2.1.-ESTRUCTURA DE UN PROGRAMA WEB

Un documento escrito en HTML contendría básicamente las siguientes etiquetas :

<HTML> Indica el inicio del documento.
<HEAD> Inicio de la cabecera.
<TITLE> Inicio del título del documento.
</TITLE> Final del título del documento.
</HEAD> Final de la cabecera del documento.
<BODY> Inicio del cuerpo del documento.
</BODY> Final del cuerpo del documento.
</HTML> Final del documento. 

2.2.-LENGUAJES DE SCRIPTS

(Scripting language, lenguaje de guión). Un lenguaje scripting es un tipo de lenguaje de programación que es generalmente interpretado.

Se los programas compilados, porque los programas son convertidos de forma permanente a un código especial antes de que puedan ejecutarse (proceso de compilación). En cambio los scripts permanecen en su forma original (su código fuente en forma de texto) y son interpretados comando por comando cada vez que se ejecutan. De todas maneras, los scripts pueden ser compilados también, aunque no es usual.

Características de los lenguajes scripting

* Los scripts suelen escribirse más fácilmente, pero con un costo sobre su ejecución.
* Suelen implementarse con intérpretes en lugar de compiladores.
* Tienen fuerte comunicación con componentes escritos en otros lenguajes.
* Los scripts suelen ser almacenados como texto sin formato.
* Los códigos suelen ser más pequeños que el equivalente en un lenguaje de programación compilado.

Tipos de lenguajes de scripting

* Lenguaje de control de tareas y shells: cmd.exe (Windows NT, Windows CE, OS/2), COMMAND.COM (DOS, Windows 9x), csh, AppleScript, sh, JScript vía Windows Script Host, VBScript vía Windows Script Host, REXX, etc.

* GUI Scripting: son lenguajes de scripting diseñados para interactuar con los elementos de las interfaces gráficas como botones, ventanas, menús, etc. Se utilizan para automatizar acciones repetitivas. También son llamados "lenguajes macro".

Ejemplos: AutoHotkey, AutoIt, Expect, Automator, etc.

* Lenguaje scripting de aplicaciones específicas: en grandes aplicaciones a veces es necesario incluir un lenguaje de scripting que se adapte a ésta y dé más posibilidades a sus usuarios.

Ejemplos: ActionScript en Flash, MATLAB, mIRC script, QuakeC, etc.

* De programación web: los lenguajes scripting para webs suelen servir para crear páginas dinámicas. De todas maneras, muchos de ellos son tan potentes como para poder crear programas de propósito general. Pueden diferenciarse en dos categorías:

- Del lado del servidor: PHP, ASP (Active Server Pages), JavaServer Pages, ColdFusion, IPTSCRAE, Lasso, MIVA Script, SMX, XSLT.

- Del lado del cliente: JavaScript, JScript, VBScript, Tcl.

* Lenguajes de procesamiento de textos: muchos lenguajes de scripting comenzaron de esta manera. Permitían automatizar tareas al administrador cuando se trataba de configuraciones basadas en textos (usual en Unix por ejemplo). En el caso de Perl, comenzó como un lenguaje de generación de reportes, pero terminó siendo un completo lenguaje para desarrollar aplicaciones.

Ejemplos: AWK, Perl, sed, XSLT.

* Lenguajes dinámicos de propósito general: Algunos lenguajes, como Perl, comenzaron como lenguajes de scripting para se desarrollaron como completos lenguajes de programación de propósito general. Otros lenguajes similares han sido descritos como "lenguajes scripting" por situaciones similares, aunque luego se hayan usado más para programar aplicaciones.

Ejemplos: APL, Boo, Dylan, Ferite, Groovy, Io, Lisp, Lua, MUMPS (M), newLISP, Nuva, Perl, PHP, Python, Ruby, Scheme, Smalltalk, SuperCard, Tcl, Revolution.

2.2.1.-ESTRUCTURAS DE CONTROL

 En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.
Con las estructuras de control se puede:
  • De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else y Select-Case)
  • Ejecutar un grupo de sentencias mientras exista una condición (Do-While)
  • Ejecutar un grupo de sentencias hasta que exista una condición (Do-Until)
  • Ejecutar un grupo de sentencias un número determinado de veces (For-Next)
  • Etc
Todas las estructuras de control tienen un único punto de entrada y un único punto de salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programación se rija por los principios de la programación estructurada.
Los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.

2.2.2.-ARREGLOS

Es un acomodo de espacios (Como en una matriz) en los cuales es una colección de un tipo de dato, y pueden ser unidimensionales, bidimesionales o multidimensionales
Es un conjunto finito y ordenado de elementos homogéneos (del mismo tipo de datos). Es un tipo de dato estructurado simple o estático y pueden ser vectores o tablas (matrices).
En lenguaje C, se pueden definir conjuntos de datos conocidos como arreglos. Por ejemplo, si deseáramos guardar en un arreglo, diez valores enteros, debemos definir este arreglo de la siguiente manera: int elem[10]; Esta expresión es la declaración del arreglo. Donde int es el tipo de datos que almacena el arreglo, elem es el nombre del arreglo, y el número encerrado en los corchetes es el número de valores que contiene el arreglo.


2.3.-MANIPULACION DE FORMULARIOS HTML MEDIANTE UN LENGUAJE  DE PROGRAMACION WEB

1. Páginas en lenguaje HTML. HTML (HyperText Markup Language) es el lenguaje por defecto utilizado para la construcción de paginas web y compatible con todos los navegadores en internet. Tiene como característica principal la presentación de gráficos y texto de forma estática.
El movimiento puede ser insertado mediante gráficos animados (gift) o con tecnología Shockwave Flash de Macromedia. Para agregar mayor interactividad ó dinamismo es necesario insertar programas adicionales en lenguajes como Java ,Perl, asp, php, o bien, realizar toda la construcción en Flash.
2. Páginas en Flash. Flash es una nueva tecnología desarrollada por Macromedia que permite añadir gran cantidad de movimientos y efectos visuales a una pagina web. Al combinar esta tecnología con el lenguaje de programación Actions Script, se pueden desarrollar una infinidad de asombrosas aplicaciones interactivas con el usuario, no disponibles anteriormente en la red.
Sin embargo, por razones de costos y compatibilidad en los navegadores, en cada proyecto web existen consideraciones técnicas evaluadas por nuestros consultores que determinan el nivel de aplicación adecuado de esta herramienta en función de los objetivos.
3. Lenguajes de programación (Java, Php, Asp, Perl, Actions Scripts). Estos son los lenguajes de programación reconocidos en los Navegadores (Explorer, Netscape) y Servidores en Internet. Mediante estos lenguajes podemos programar innumerables aplicaciones Web útiles para nuestros clientes (Ejem. Foros, formularios, manejo base de datos, etc.).

 2.4.- ACCESO A BASE DE DATOS

Cada vez mayor número de sitios web utilizan páginas creadas en Java, ColdFussion, ASP, CGI o PHP que permiten acceder a las bases de datos corporativas. Estos productos y lenguajes, conocidos como middleware, interrogan a la BD, procesan su respuesta y la devuelven en formato HTML que pueda visualizar un navegador convencional.
El acceso a través de Internet posibilita una forma rápida y cómoda de acceder a la información almacenada en la BD con el fin de recuperarla, modificarla o insertarla. Se despliega así todo un amplio abanico de posibilidades para el diseño de páginas web: catálogos en línea, con información siempre actualizada sobre productos; información sobre visitantes, que puede actualizarse dinámicamente a medida que éstos navegan por el sitio web; generación al vuelo de páginas, en función de selecciones o gustos del cliente, o del momento del día, o cualquier otro criterio; puede conservar el contenido de un sitio web en una BD, que se cargue dinámicamente cuando el usuario solicita una página, de forma que separe el diseño y formato de las páginas de su contenido; servicios en línea, como correo web, acceso remoto a BD corporativas, noticias, guías de servicios y un largo etcétera.
A lo largo de este curso se explicará con un sencillo ejemplo cómo diseñar aplicaciones en ASP que accedan a bases de datos.

2.4.1.-CONEXIONES

La conexión a Internet es el mecanismo de enlace con que una computadora o red de computadoras cuenta para conectarse a Internet, lo que les permite visualizar las páginas web desde un navegador y acceder a otros servicios que ofrece esta red. Las empresas que otorgan acceso a Internet reciben el nombre de proveedores(ISP).
Punto donde se realiza un enlace entre dispositivos o sistemas. También conexión hace referencia al enlace completo.
Una conexión puede ser alambrada o inalámbrica, digital o analógica, virtual o real, etc.
Por ejemplo, el acceso a internet es un tipo de conexión.
El objetivo de una conexión es transferir datos.

2.4.2.-MANIPULACION Y PRESENTACION DE DATOS

Lenguaje de Manipulación de Datos (Data Manipulation Language, DML) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado. El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras.

Clasificación del lenguaje de manipulación de datos

Son DML : Select, Insert, Delete y Update
Se clasifican en dos grandes grupos:
Lenguajes procedimentales. En este tipo de lenguaje el usuario da instrucciones al sistema para que realice una serie de procedimientos u operaciones en la base de datos para calcular un resultado final.
En los lenguajes no procedimentales el usuario describe la información deseada sin un procedimiento especifico para obtener esa información.

2.5.-SEGURIDAD EN UNA APLICACION WEB

Últimamente he recibido algunos correos electrónicos  preguntándome acerca de la seguridad de las aplicaciones WEB, y como hacer para incorporar en la diseño seguridad, por eso he decidido escribir este articulo, este articulo esta dividido en dos secciones una especifica para desarrolladores en la que hablaremos acerca de las consideraciones de comunicación e intercambio de información y otra para los administradores para hablar de cómo hacer el setup o montaje inicial de dichas aplicaciones, la mayoría de los conceptos son tomados de mi experiencia en desarrollo de aplicaciones así como su aseguramiento.

Desarrolladores
El caso del desarrollador es el caso mas complejo de los dos por eso he decidido abordarlo en primera instancia, dada la cantidad de configuraciones que se pueden tener he decidido resumirlas de la forma mas genérica para poder limitar los escenarios que se pueden tener en una organización, el primer caso es el mas típico que se encuentra en muchas organizaciones que prestan servicios a Internet (Web services o hosting) existe una conexión a Internet y los clientes consultan la información desde su ubicación, en este caso existen múltiples alternativas de ataques y varis opciones de defensa, miremos en orden primero las alternativas de ataque y cuales son los riesgos que presentan para la información que se almacena en las aplicaciones:

Inyección de DNS: consiste en alterar los registros del sistema dns autorizado para entregar la información a los clientes sobre la ubicación de una URL, en la mayoría de los casos no es una opción difícil de realizar dado que muchos de los DNS que están implementados están relativamente abiertos a manipulación externa por una pobre seguridad, como afecta eso a la aplicación? Desde el punto de vista del usuario es transparente  puesto que para el la aplicación sigue disponible, sin embargo los requerimientos que se hacían en la grafica a la maquina Web ahora se hacen a la maquina del “Intruso Web” por lo que este sistema es el que puede recolectar toda la información de usuarios y claves, así como los datos del cliente remoto, una vez capturados puede redirigir a los usuarios al sitio “Web” verdades y nunca el usuario ni el sitio “Web” original se enteran de dicho fallo.








miércoles, 9 de mayo de 2012

UNIDAD 1 "PLATAFORMA WEB"

UNIDAD 1

"PLATAFORMA WEB"

1.0.-EVOLUCION DE LAS APLICACIONES WEB

-Pagina web
  Es la unidad basica del world wide web.
-Sitio web
  Conjunto de archivos electronicos y paginas web referentes a un tema en particular.
-Entorno Fisico
  Es el contexto social que afecta la comunicacion de manera proactiva y efisciente.
-Entorno Logico
  Atiende las acciones de tiemo, espacio,costo,etc.

1.2.- ARQUTECTURA CLIENTE SERVIDOR
Estos interactuan por un mismo mecanismo de pasaje de mensajes en donde existen:

-EVOLUCION DE LOA ARQITECTURA CLIENTE SERVIDOR

*1ra era de la capa central
  Se basa en terminales remotas que conectaban directamente a una pc central. La cual se encargaban de      prestar a un grupo exclusivo de usuarios.

*La era de las computadoras dedicadas
  En esta era cada servicio lo empleaba el usuario al conectarse para la utilizacion de los recursos.

*La era de la conexion libre
  En esta era los host de escritorio se conectaban a las computadorasde servicios, empleando software de simulacion hacia las terminales.

*La era del computo a traves de redes
  Esta era se basa en el concepto de redes en la que la informacion recide en una o barias computadoras  y todos los usuarios interconectados podran compartir recursos.

*La era de la arquitectura Cliente/Servidor
  En esta arquitectura cada uno de los usuarios llamada cliente produce una demanda de informacion a una pc llamada servidor.

1.2.1.-APLICACIONES DE 2,3 Y "N" CAPAS

-APLICACIONES DE 2 CAPAS

La arquitectura de dos capas en la actualidad es muy utilizada, aunque con muchas fallas,todabia no se ha podido dejar de usar. Estas arquitecturas fueron las primeras en aprovecharse de la estructura Cliente-Servidor.

-ARQUITECTURA DE 2 CAPAS
Las capas que esta arquitectura presenta son las siguientes:

*NIVEL DE APLICACION
En este nivel se encuentra toda la interfaz del sistema y es la que el usuario puede disponer para realizar su actividad con el sistema.

*NIVEL DE BASE DE DATOS
Este nivel de la base de datos tambien llamado el Repositorio de Datos es la capa en donde se almacena toda la informacionmingresada en el sistema y que se deposita en forma permanente.

-APLICACIONES DE 3 CAPAS
La arquitectura de 2 capas si bien ayudo en unos años atras, se vio la necesidad de crear una nueva arqutectura, ya que en 2 capas se tenia algunos problemas en la capa de aplicacion, ya que la principal desventaja de está era el peso que tenia el cliente.
 





-ARQUITECTURA DE 3 CAPAS

*Nivel de aplicacion:
La diferencia de este nivel aplicado ahora en una arquitectura de tres capas es que solo tiene que trabajar con la semantica propia de aplicacion, sin tener que preocuparse de como esta implementando este nivel de su estructura fisica.

*Nivel de dominion de la aplicacion:
Este nivel se encarga de toda la estructura fisica y el dominio de la aplicacion.

*Nivel de reposito:
Es la capa en donde se almacenan los datos y toda la informacion.
-Visual Basic, Capa de aplicacion.
-SQL Server, Es el repositorio de datos.
-MTS, Esel nivel de dominio de la aplicacion.

-APLICACION DE "N" CAPAS

Podríamos ir separando nuestra aplicación en mas niveles lógicos, por ejemplo, vamos a querer que nuestra aplicación tenga múltiples interfaces, es decir interface gráfica (standalone o desktop) y también interface Web.

Lo aconsejado en esta circunstancia es separar al Servidor Web encargado de alojar las páginas Web en una capa más. En este caso se tendrían 4 capas.

 1.3.- LENGUAJES DE PROGRAMACION WEB Y DBMS

En la estructura básica de un Sistema Manejador de Base de Datos se enuncian dos lenguajes que permiten trabajar sobre la base de datos.  Estos lenguajes estandar son:
 
  • DDL (Data Definition language):  Lenguaje de Definición de Datos.  Por medio de este el DBMS identifica las descripciones de los elementos de los esquemas y almacena la descripción del esquema en el catálogo del DBMS.
  • Por medio de este el DBMS especifica el esquma conceptual e interno (Base de datos Almacenada).  
  • SDL (Store Definition language): Lenguaje de definición de almacenamiento.  Es utilizado por el DBMS para especificar el esquema interno que corresponde a la Base de Datos Almacenada.
  • VDL (View Definition language): Lenguaje de Definición de Vistas.  Es utilizado por el DBMS para especificar las vistas del usuario y sus correspondiencias con el esquema conceptual.
En las Bases de Datos Relacionales, el SQL, representa una combinación de los anteriores.
  • DML (Data Manipulation language): Lenguaje de Manipulación de Datos.  Permite la manipulación de las operaciones de Inserción, Eliminación y Modificación.
    • Tipos de DML's:
      • De alto Nivel o No por procedimientos: SQL.
      • De bajo Nivel o por procedimientos.                                                                         
1.4.-INSTALACION Y CONFIGURACION DE LA PLATAFORMA WEB EN MULTIPLATAFORMA 

1.4.1.-SISTEMA OPERATIVO

-Instalacion y configuracion del S:O Linux:

Para las pruebas con Apache, partiremos de un entorno formado por un cliente XP con Firefox e Internet Explorer instalado, el mismo que para el caso de Windows y un servidor Ubuntu 10.04 LTS Server.  Si decidiésemos no instalar interfaz gráfico en dicho servidor, incluso podrían reducirse algo más, aunque en este caso no lo haremos. Debido a que la instalación de Ubuntu Server es también muy guiada y automatizada tampoco la describiremos en esta sección, sobre todo porque para las pruebas que vamos a hacer nos vale la configuración por defecto de dicho sistema operativo sin necesidad de instalar ningún servicio adicional a los de por defecto cuando el programa de instalación requiera hacer esta selección.
La configuración de los interfaces de red de esta infraestructura de máquinas será una réplica de la que hemos usado en el caso de Windows:

  • Una conexión a Internet vía NAT sobre el host (máquinas Vmware y host comparten pues la conexión a Internet). Esta primera conexión la usaremos para actualizaciones e instalar software descargado de Internet. Su configuración de IP la dejamos por defecto (con lo que usará el servicio DHCP proporcionado por el software de virtualización para conexiones NAT).
  • Otra conexión de red entre las máquinas de manera que se forme una red local interna entre ellas, para que ambas se vean correctamente. Nuestro ejemplo concreto usará la red virtual de Vmware Vmnet5, con IPs 5.0.0.1 (cliente XP) y 5.0.0.3 (Ubuntu 10.04). Ambas tienen una máscara de subred 255.255.255.0. Las IPs de la red interna son puestas como ejemplo simplemente, pero se mantendrán durante todo el curso para referirse a las máquinas cliente y servidor respectivamente.

Configuración de Linux
Configurar la red y el servidor web en Ubuntu LTS 10.04 es algo más complejo que en el caso de Windows , dado que la configuración manual disponible en el escritorio (si lo instalamos) podría no aceptar correctamente determinados parámetros. La forma más segura de hacerlo es de forma manual via consola de la siguiente manera:
  • Abrir o entrar la consola/terminal y ejecutar el comando su para tomar la identidad del usuario root. Otra alternativa válida es ejecutar las siguientes órdenes con anteponiendo el comando sudo.
  • Editar el archivo /etc/network/interfaces con nano /etc/network/interfaces
  • Editar dicho archivo para que quede como lo siguiente. La configuración de red que vamos a plantear con esta infraestructura es la misma que en el caso de Windows (una red privada interna (interfaz eth3) y una red pública que de acceso a Internet (interfaz eth2)):

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

# The primary network interface (internet)
auto eth2
iface eth2 inet dhcp

# The secondary network interface (lan)
auto eth3
iface eth3
inet static address 5.0.0.3
netmask 255.255.255.0
network 5.0.0.0
broadcast 5.0.0.255
#gateway 5.0.0.1

  • Reiniciar el sistema de red ejecutando /etc/init.d/networking restart
  • Es importante no colocar un gateway a eth3 para que el sistema sólo intente usar eth2 para salir a Internet. En caso contrario, podríamos tener problemas para acceder correctamente a Internet.
Una vez hechas todas estas operaciones, el siguiente paso a dar es actualizar el Ubuntu recién instalado con las últimas actualizaciones disponibles, para eliminar todos los posibles problemas, errores y agujeros de seguridad que se hayan detectado hasta la fecha. En el caso de haber instalado interfaz gráfico al servidor es muy probable que el propio sistema nos avise de la existencia de actualizaciones. En caso contrario (o si por alguna razón desactivamos estos avisos automáticos), podemos actualizar el sistema mediante estos dos comandos de consola:
  • sudo apt-get update (actualiza los paquetes del sistema operativo a la última versión)
  • sudo apt-get upgrade (actualiza los paquetes instalados a la última versión)

1.4.2.-SERVIDOR WEB
Los servidores web son aquellos cuya tarea es alojar sitios y/o aplicaciones, las cuales son accedidas por los clientes utilizando un navegador que se comunica con el servidor utilizando el protocolo HTTP (hypertext markup language).
Básicamente un servidor WEB consta de un interprete HTTP el cual se mantiene a la espera de peticiones de clientes y le responde con el contenido según sea solicitado. El cliente, una vez recibido el código, lo interpreta y lo exhibe en pantalla.
Además los servidores pueden disponer de un intérprete de otros lenguajes de programación que ejecutan código embebido dentro del código HTML de las páginas que contiene el sitio antes de enviar el resultado al cliente. Esto se conoce como programación de lado del servidor y utiliza lenguajes como ASP, PHP, Perl y Ajax. Las ventajas de utilizar estos lenguajes radica en la potencia de los mismos ejecutando tareas mas complejas como, por ejemplo acceder a bases de datos abstrayendo al cliente de toda la operación.

1.4.3.-LENGUAJES DE PROGRAMACION

Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente. Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML.

ALGUNOS LENGUAJES DE PROGRAMACIÓN:
 1.4.4.-WEB 

Web es un vocablo inglés que significa “red”, “telaraña” o “malla”. El concepto se utiliza en el ámbito tecnológico para nombrar a una red informática y, en general, a Internet (en este caso, suele escribirse como Web, con la W mayúscula).

Web

El término, de todas formas, tiene varios usos. Además de nombrar a Internet en general, la palabra web puede servir hacer mención a una página web, un sitio web o hasta un servidor web.
Una página web es un documento que incluye un archivo HTML  con texto, imágenes, videos, animaciones Flash, etc. Al conjunto de páginas web que suelen formar parte del mismo dominio o subdominio de Internet se lo conoce como sitio web. Dentro del sitio web, todas las páginas guardan alguna relación entre sí y están vinculadas mediante vínculos (también conocidos como enlaces, hipervínculos, hiperenlaces o links).

1.4.5.-DBMS

Significa "Sistema de Gestión de Base de Datos". En resumen, un DBMS es un programa de base de datos. Técnicamente hablando, se trata de un sistema de software que utiliza un método estándar de catalogación, recuperación y ejecutar consultas sobre datos. El DBMS gestiona los datos de entrada, lo organiza, y proporciona formas para que los datos que se extraen o modificados por los usuarios u otros programas.

Algunos ejemplos de DBMS incluyen MySQL, PostgreSQL, Microsoft Access, SQL Server, FileMaker, Oracle, RDBMS, dBASE, Clipper, y FoxPro. Puesto que hay sistemas de bases de tantas gestión disponibles, es importante que exista un camino para que puedan comunicarse entre sí. Por esta razón, la mayoría del software de base de datos viene con un Open Database Connectivity (ODBC) que permite a la base de datos para la integración con otras bases de datos. Por ejemplo, las sentencias SQL comunes, tales como SELECT y INSERT se traducen de la sintaxis propia de un programa en una sintaxis de otras bases de datos puedan entender.


1.5.- SEGURIDAD 

La seguridad informática, es el área de la informática que se enfoca en la protección de la infraestructura computacional y todo lo relacionado con esta (incluyendo la información contenida). Para ello existen una serie de estándares, protocolos, métodos, reglas, herramientas y leyes concebidas para minimizar los posibles riesgos a la infraestructura o a la información. La seguridad informática comprende software, bases de datos, metadatos, archivos y todo lo que la organización valore (activo) y signifique un riesgo si ésta llega a manos de otras personas. Este tipo de información se conoce como información privilegiada o confidencial.
El concepto de seguridad de la información no debe ser confundido con el de seguridad informática, ya que este último sólo se encarga de la seguridad en el medio informático, pudiendo encontrar información en diferentes medios o formas.