21
Desarrollo de Aplicaciones Web Seguridad

Seguridad app web

Embed Size (px)

DESCRIPTION

Presentación de Seguridad en la Web

Citation preview

Page 1: Seguridad app web

Desarrollo de Aplicaciones Web

Seguridad

Page 2: Seguridad app web

2

Seguridad en aplicaciones Web

Introducción En las redes hay datos e información sensible de

los usuarios que puede encontrarse expuesta cuando es enviada entre clientes y servidores.

Así, éstos datos y las aplicaciones web que los procesan pueden sufrir diversos ataques:• Ataques pasivos: intercepción de mensajes o de la

identidad de los usuarios por una tercera parte con fines maliciosos.

• Ataques activos: denegación de servicio e imposibilidad de acceso a los recursos utilizados por los usuarios.

Para evitar éstos ataques, se deben implementar medidas de seguridad.

Page 3: Seguridad app web

3

Seguridad en aplicaciones Web

Servicios de seguridad

• Confidencialidad de los datos (que solamente puedan ser leídos por el destinatario).

• Integridad de los datos (que no hayan sido modificados durante el envío).

• Identificación de los usuarios (que un usuario sea quien dice ser).

• Autenticación de los usuarios (confirmar su identificación).

• Control de acceso (que sólo accedan a los servicios o recursos los usuarios autorizados).

• No repudio (prueba irrefutable de verificación).

Page 4: Seguridad app web

4

Seguridad en aplicaciones Web

Implementación de la confidencialidad La confidencialidad se puede lograr utilizando la

criptografía y algoritmos de encriptación. La criptografía permite transformar un texto en otro,

que es incomprensible para receptores no autorizados, a través de un proceso de encriptado.

Page 5: Seguridad app web

5

Seguridad en aplicaciones Web Los tipos de encriptación pueden clasificarse en:

• Encriptación simétrica: el algoritmo utiliza una misma clave secreta para encriptar y desencriptar el mensaje.

• Ejemplos: DES (Data Encryption Standard), 3DES, IDEA (International Data Encryption Algorithm), RC2, RC4, RC5.

• Encriptación asimétrica: el algoritmo utiliza una clave para encriptar el mensaje (clave pública) y otra para desencriptarlo (clave privada).

• Ejemplo: RSA.

Tanto PHP como JavaScript soportan el uso de los algoritmos de encriptación. PHP incluye la librería Mcrypt.

Page 6: Seguridad app web

6

Seguridad en aplicaciones Web

Ejemplo: Encriptación del texto con JavaScript

Page 7: Seguridad app web

7

Seguridad en aplicaciones Web

Ejemplo: Desencriptación del texto con PHP

Page 8: Seguridad app web

8

Seguridad en aplicaciones Web

Implementación de la integridad La verificación de la integridad de los datos se

puede lograr utilizando una función hash, la cual se aplica sobre el mensaje y devuelve un resumen único de éste:

Page 9: Seguridad app web

9

Seguridad en aplicaciones Web Algunas características de las funciones hash son:

• No produce colisiones: no se obtiene el mismo resumen para dos documentos diferentes.

• Es imposible de invertir: no se puede determinar el mensaje a partir de su resumen.

• Produce muchos cambios en el resumen: si el documento cambia, el resumen también.

Ejemplos de funciones hash: MD5 (Message Digest Algorithm), RIPEMD, SHA y SHA1.

Tanto PHP como JavaScript soportan el uso de funciones hash. PHP incorpora las funciones MD5 y MD5_file, que permiten obtener el resumen de una cadena o un archivo respectivamente.

Page 10: Seguridad app web

10

Seguridad en aplicaciones Web

Ejemplo: Resumen MD5 en PHP

Page 11: Seguridad app web

11

Seguridad en aplicaciones Web

Implementación de la identificación y la autenticación La forma básica de identificación de usuarios es con

algún dato característico (nombre de usuario, documento, correo electrónico, etcétera) y una contraseña asociada.

Otra forma más segura es utilizando la firma digital.

• La firma digital se implementa utilizando el algoritmo RSA: el usuario encripta el mensaje con la clave privada y el destinatario la desencripta con la pública.

La autenticación se logra cuando una tercera parte (autoridad certificante) asegura la identidad de una entidad mediante el uso de certificados.

Page 12: Seguridad app web

12

Seguridad en aplicaciones Web

Algunas políticas de seguridad para el envío de passwords

D atos enviados E n la B D E n e l se rvido r

4 usuario y resumendel password

resumen delpassword

Comparar los resúmenes

3 usuario y passwordlimpio

resumen delpassword

Calcular el resumen del passwordrec ibido y c omparar c on el

almacenado en la BD

2 usuario y passwordenc riptado

password limpioDesenc riptar el password rec ibido yc omparar c on el almacenado en la

BD

1 usuario y passwordlimpio

password limpio Comparar los password

Se

gu

rida

d

+

-• ¿Qué opciones tiene un usuario para recuperar un

password olvidado?

Page 13: Seguridad app web

13

Seguridad en aplicaciones Web

Ataques a las aplicaciones web

Además de implementar los servicios de seguridad,

una aplicación web debe estar preparada para otros

ataques:

• SQL Injection

• Cross-Site Scripting

• Phising

• Session Hijacking

Page 14: Seguridad app web

14

Seguridad en aplicaciones Web

SQL Injection Los datos ingresados en los formularios a veces son

utilizados para realizar consultas a la base de datos. Esto puede ser peligroso si no se validan las

entradas de datos sensibles. Así, se puede producir un error en ejecución que se

mostrará en el navegador, y puede divulgar la estructura de la base de datos al atacante.

O también, un usuario podría pasar el control de identificación, o ingresar una sentencia SQL que permitiría borrar tablas o la base de datos.

Page 15: Seguridad app web

15

Ejemplos

Seguridad en aplicaciones Web

Consulta en el script$consulta = “SELECT id FROM usuarios WHERE usuario = ‘”.$_POST[‘usuario’].“’AND pass = ‘ ”.$_POST[‘clave’].“ ’ ”;

Valores ingresados usuario= juan – pass = ‘OR ‘1

Consulta a ejecutar$consulta = “SELECT id FROM usuarios WHERE usuario = ‘juan’ AND pass = ‘’ OR ‘1’”;

Consulta en el script $consulta = “SELECT titulo FROM libros WHERE codigo = ”.$_POST[‘codigo’];

Valor ingresado codigo = 23; DROP TABLE libros

Consulta a ejecutar$consulta = “SELECT titulo FROM libros WHERE codigo = 23; DROP TABLE libros”

Page 16: Seguridad app web

16

Ejemplo de vulnerabilidad (junio 2009)

Seguridad en aplicaciones Web

Page 17: Seguridad app web

17

Seguridad en aplicaciones Web Algunas formas de evitar este ataque son:

• Validar todos los datos que se ingresan a la base de datos, incluyendo los tipos de datos esperados.

• Verificar como trabajan las consultas SQL que se incluyen en el script PHP.

• De ser posible, utilizar procedimientos almacenados.

• Otorgar a los usuarios sólo los permisos de acceso que necesita.

• Si se trabaja con librerías que incluyen los datos de la conexión (usuario, password, servidor, base de datos), guardarla en un directorio inaccesible por los clientes y tener precaución con la extensión del archivo, ya que podría ser visualizado.

Page 18: Seguridad app web

18

Seguridad en aplicaciones Web

Cross-Site Scripting Este ataque se da cuando un servidor fiable ejecuta

scripts que están guardados en otro, y tienen intención maliciosa, como obtener datos sensibles.

La inclusión del código malicioso puede lograrse a través de boletines de noticias, foros, libros de visitas, etc.

Luego, un usuario ejecuta el script, ingresando datos sensibles, sin darse cuenta que en realidad no está trabajando en el sitio confiable.

Otra forma de ataque es cuando se utiliza el script para obtener ID de sesiones.

Page 19: Seguridad app web

19

Seguridad en aplicaciones Web

Phising El phising es el arte de suplantar sitios web,

utilizando la replicación del mismo, incluyendo hasta los formularios de entrada de datos.

Luego, al usuario se lo puede engañar para que facilite sus datos, sin que él sepa que no esta trabajando con el sitio web auténtico.

Otra forma es enviando un correo electrónico con un enlace hacia el sitio replicado, donde se le solicitarán nuevamente los datos.

Una forma de evitar este ataque es usando certificados válidos otorgados por autoridades certificantes.

Page 20: Seguridad app web

20

Seguridad en aplicaciones Web

Session Hijacking Cuando un usuario autenticado está conectado a

una aplicación, es posible que otro tome el control de su sesión.

Esto se logra obteniendo el ID de la sesión o bien recuperando la cookie de la misma.

El ID de la sesión puede obtenerse utilizando técnicas de fuerza bruta o mediante la intercepción de mensajes.

Una forma de evitar este ataque es definiendo tiempos de expiración por inactividad y absoluto.

Otra forma es usando SSL, que trabaja con datos encriptados.

Page 21: Seguridad app web

Fin de la Unidad

Gracias por su atención!!!