xumarhu.net xumarhu.net Cursos Tópicos Selectos de Tecnologías Web

Práctica 9: Transacciones seguras

Forma de trabajo:

En equipos de hasta 4 integrantes.


Desarrollo:

ANÁLISIS 1: Autenticación de un servidor

¿Cómo verificar la identidad de un servidor durante una transacción?

cliente y servidor web

¿Cómo el Cliente 1 se puede asegurar de la autenticidad del Servidor 1?

Esto se logra por medio de un tercer elemento en nuestro sistema, el Certified Authority (CA), el cual se encargará de autenticar al Servidor 1 ante nuestro Cliente 1:

autoridad certificadora

Parte Práctica: Instale y configure un Certified Authority (CA) que verifique la autenticidad del Servidor 1 ante el Cliente 1.



ANÁLISIS 2:Detener acceso a BOTS

¿Cómo sabe el Servidor 1 que el Cliente 1 no es una máquina ó un BOT?
Para verificar este paso, se agrega un CAPTCHA a un formulario que envíe el Cliente 1 al Servidor 1:

captura de datos con captcha

Parte Práctica: Realizar la captura de datos (nombre, dirección, etc.) por medio de un formulario HTML con verificación por CAPTCHA.
Aquí se encuentra un código de ejemplo para validación de formularios utilizando CAPTCHA con la librería "securimage".



ANÁLISIS 3: Autenticar datos con Firma Digital

¿Cómo saber si un dato (por ejemplo el CURP) es enviado por el cliente original?

Para lograr esto, se utiliza una Firma Digital, que sólo Cliente 1 y Servidor 1 conocen. El dato que el Cliente 1 quiere enviar (CURP) se suma (concatena) con la Firma Digital, y a ambos datos se les aplica MD5 (o algún otro algoritmo parecido) y se obtiene una Cadena de Validación (Cadena 1).

Esta cadena se envía junto con el CURP y algún identificador (en este caso el Nombre Completo). El Servidor 1 recibe el Nombre Completo junto con la CURP y la Cadena de Validación.

A continuación el Servidor 1 busca en su base de datos el nombre que recibió y encuentra la firma digital del Cliente 1 que tiene almacenada previamente. Ahora concatena el dato que recibió (CURP) con la firma digital y les aplica MD5, obteniéndose una Cadena de Validación (Cadena 2).

Si la Cadena 1 es igual a la Cadena 2, entonces podemos asegurar al autenticidad del Cliente 1 y la validez del dato que envió (CURP), guardando este información en la base de datos.

firma digital

Parte Práctica: Realizar la captura de datos (Nombre, CURP y Firma Digital) por medio de un formulario HTML, enviarlos a un Servidor 1 que se encargará de autentificar al usuario y validar el CURP enviado.



ANÁLISIS 4: Protección de datos cuando viajan por Internet

¿Cómo proteger los datos de un cliente mientras viajan por Internet?
Utilizar un método de cifrado de datos de llave Pública/Privada entre Cliente 1 y Servidor 1.

cifrado de datos con RSA

Parte Práctica: Realizar la captura de datos (Nombre, Dirección, CURP, etc.) por medio de un formulario HTML, enviarlos a un Servidor 1 utilizando un método de cifrado de llave Pública/Privada (por ejemplo RSA).
Aquí hay un ejemplo para el Cifrado de datos de un formulario con JavaScript.



ANÁLISIS 5: Validar consistencia de datos antes de enviar

¿Cómo prevenir la inconsistencia de los datos?
Validar cada uno de los datos que se capturan, al momento de enviarse (por medio del formulario) y cuando se reciben en el Servidor.

validación de datos

Parte Práctica: Realizar la captura de datos (Nombre, Dirección, CURP, etc.) por medio de un formulario HTML, y validar cada uno de los campos por medio de HTML y JavaScript. Después enviarlos a un Servidor 1 y nuevamente validarlos por medio de PHP (esto es debido a que el cliente puede deshabilitar el JavaScript).
Aquí hay un ejemplo para la Validacion de Formularios utilizando una biblioteca de JavaScript (livevalidation).
Aquí hay un ejemplo para la Validacion de Formularios utilizando HTML 5.



ANÁLISIS 6: Preservar integridad de la información en la Base de Datos

¿Cómo mantener la integridad de la información cuando se almacenan en una Base de Datos?
Para prevenir que alguna persona o proceso modifiquen u observen nuestra información en la base de datos, se requiere cifrar cada uno de los campos que se almacenan. Se recomienda utilizar métodos de cifrado unidireccional ó asimétrico (como SHA) para cifrar campos como las claves (passwords) y utilizar métodos bidireccionales ó simétricos (como DES y AES) para cifrar la información que se requiere recuperar.

cifrado de datos

Parte Práctica: Realizar la captura de datos (Nombre, Dirección, CURP, etc.) por medio de un formulario HTML, y después enviarlos a un Servidor 1, el cual, antes de guardar la información en la base de datos, cifrará la información.
Aquí se encuentran los comandos de cifrado en MySQL.
Aquí se encuentra el manual de comandos para el manejo de usuarios en MySQL.



ANÁLISIS 7: Ataque de Denegación de Servicios (DOS)

¿Cómo protegerse de un Ataque de Denegación de Servicios?

PARTE PRACTICA:
Instalar un Firewall que detecte el envío masivo de paquetes desde un solo punto y que pueda bloquearlo.



ANÁLISIS 8: Proteger la información entre Cliente y Servidor (HTTPS)

¿Cómo cifrar las conexiones entre el navegador y el servidor Web?

PARTE PRACTICA:
Instalar HTTPS en el servidor Web (mod_ssl).



ANÁLISIS 9: Proteger de inyección de código malicioso (SQL Injection)

¿Cómo protegerse de la inyección maliciosa de código?

PARTE PRACTICA:
Material de Apoyo:

Portal de Tecnología desarrollado por: Rogelio Ferreira Escutia
Valid CSS Valid XHTML 5