Seguridad app web

1,115 views

Published on

Presentación de Seguridad en la Web

Published in: Education
  • Be the first to comment

  • Be the first to like this

Seguridad app web

  1. 1. Desarrollo de Aplicaciones Web Seguridad
  2. 2. Seguridad en aplicaciones Web <ul><li>Introducción </li></ul><ul><li>En las redes hay datos e información sensible de los usuarios que puede encontrarse expuesta cuando es enviada entre clientes y servidores. </li></ul><ul><li>Así, éstos datos y las aplicaciones web que los procesan pueden sufrir diversos ataques: </li></ul><ul><ul><li>Ataques pasivos: intercepción de mensajes o de la identidad de los usuarios por una tercera parte con fines maliciosos. </li></ul></ul><ul><ul><li>Ataques activos: denegación de servicio e imposibilidad de acceso a los recursos utilizados por los usuarios. </li></ul></ul><ul><li>Para evitar éstos ataques, se deben implementar medidas de seguridad. </li></ul>
  3. 3. Seguridad en aplicaciones Web <ul><li>Servicios de seguridad </li></ul><ul><ul><li>Confidencialidad de los datos (que solamente puedan ser leídos por el destinatario). </li></ul></ul><ul><ul><li>Integridad de los datos (que no hayan sido modificados durante el envío). </li></ul></ul><ul><ul><li>Identificación de los usuarios (que un usuario sea quien dice ser). </li></ul></ul><ul><ul><li>Autenticación de los usuarios (confirmar su identificación). </li></ul></ul><ul><ul><li>Control de acceso (que sólo accedan a los servicios o recursos los usuarios autorizados). </li></ul></ul><ul><ul><li>No repudio (prueba irrefutable de verificación). </li></ul></ul>
  4. 4. Seguridad en aplicaciones Web <ul><li>Implementación de la confidencialidad </li></ul><ul><li>La confidencialidad se puede lograr utilizando la criptograf í a y algoritmos de encriptaci ó n. </li></ul><ul><li>La criptograf í a permite transformar un texto en otro, que es incomprensible para receptores no autorizados, a través de un proceso de encriptado. </li></ul>
  5. 5. Seguridad en aplicaciones Web <ul><li>Los tipos de encriptación pueden clasificarse en: </li></ul><ul><ul><li>Encriptación simétrica: el algoritmo utiliza una misma clave secreta para encriptar y desencriptar el mensaje. </li></ul></ul><ul><ul><ul><li>Ejemplos: DES (Data Encryption Standard) , 3DES, IDEA (International Data Encryption Algorithm), RC2, RC4, RC5. </li></ul></ul></ul><ul><ul><li>Encriptación asimétrica: el algoritmo utiliza una clave para encriptar el mensaje (clave pública) y otra para desencriptarlo (clave privada). </li></ul></ul><ul><ul><ul><li>Ejemplo: RSA. </li></ul></ul></ul><ul><li>Tanto PHP como JavaScript soportan el uso de los algoritmos de encriptación. PHP incluye la librería Mcrypt. </li></ul>
  6. 6. Seguridad en aplicaciones Web <ul><li>Ejemplo: Encriptación del texto con JavaScript </li></ul>
  7. 7. Seguridad en aplicaciones Web <ul><li>Ejemplo: Desencriptación del texto con PHP </li></ul>
  8. 8. Seguridad en aplicaciones Web <ul><li>Implementación de la integridad </li></ul><ul><li>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: </li></ul>
  9. 9. Seguridad en aplicaciones Web <ul><li>Algunas características de las funciones hash son: </li></ul><ul><ul><li>No produce colisiones: no se obtiene el mismo resumen para dos documentos diferentes. </li></ul></ul><ul><ul><li>Es imposible de invertir: no se puede determinar el mensaje a partir de su resumen. </li></ul></ul><ul><ul><li>Produce muchos cambios en el resumen: si el documento cambia, el resumen también. </li></ul></ul><ul><li>Ejemplos de funciones hash: MD5 (Message Digest Algorithm), RIPEMD, SHA y SHA1. </li></ul><ul><li>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. </li></ul>
  10. 10. Seguridad en aplicaciones Web <ul><li>Ejemplo: Resumen MD5 en PHP </li></ul>
  11. 11. Seguridad en aplicaciones Web <ul><li>Implementación de la identificación y la autenticación </li></ul><ul><li>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. </li></ul><ul><li>Otra forma más segura es utilizando la firma digital. </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>La autenticación se logra cuando una tercera parte (autoridad certificante) asegura la identidad de una entidad mediante el uso de certificados. </li></ul>
  12. 12. Seguridad en aplicaciones Web <ul><li>Algunas políticas de seguridad para el envío de passwords </li></ul><ul><ul><li>¿Qué opciones tiene un usuario para recuperar un password olvidado? </li></ul></ul>
  13. 13. Seguridad en aplicaciones Web <ul><li>Ataques a las aplicaciones web </li></ul><ul><li>Además de implementar los servicios de seguridad, una aplicación web debe estar preparada para otros ataques: </li></ul><ul><ul><li>SQL Injection </li></ul></ul><ul><ul><li>Cross-Site Scripting </li></ul></ul><ul><ul><li>Phising </li></ul></ul><ul><ul><li>Session Hijacking </li></ul></ul>
  14. 14. Seguridad en aplicaciones Web <ul><li>SQL Injection </li></ul><ul><li>Los datos ingresados en los formularios a veces son utilizados para realizar consultas a la base de datos. </li></ul><ul><li>Esto puede ser peligroso si no se validan las entradas de datos sensibles. </li></ul><ul><li>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. </li></ul><ul><li>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. </li></ul>
  15. 15. <ul><li>Ejemplos </li></ul>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”
  16. 16. <ul><li>Ejemplo de vulnerabilidad (junio 2009) </li></ul>Seguridad en aplicaciones Web
  17. 17. Seguridad en aplicaciones Web <ul><li>Algunas formas de evitar este ataque son: </li></ul><ul><ul><li>Validar todos los datos que se ingresan a la base de datos, incluyendo los tipos de datos esperados. </li></ul></ul><ul><ul><li>Verificar como trabajan las consultas SQL que se incluyen en el script PHP. </li></ul></ul><ul><ul><li>De ser posible, utilizar procedimientos almacenados. </li></ul></ul><ul><ul><li>Otorgar a los usuarios sólo los permisos de acceso que necesita. </li></ul></ul><ul><ul><li>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. </li></ul></ul>
  18. 18. Seguridad en aplicaciones Web <ul><li>Cross-Site Scripting </li></ul><ul><li>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. </li></ul><ul><li>La inclusión del código malicioso puede lograrse a través de boletines de noticias, foros, libros de visitas, etc. </li></ul><ul><li>Luego, un usuario ejecuta el script, ingresando datos sensibles, sin darse cuenta que en realidad no está trabajando en el sitio confiable. </li></ul><ul><li>Otra forma de ataque es cuando se utiliza el script para obtener ID de sesiones. </li></ul>
  19. 19. Seguridad en aplicaciones Web <ul><li>Phising </li></ul><ul><li>El phising es el arte de suplantar sitios web, utilizando la replicación del mismo, incluyendo hasta los formularios de entrada de datos. </li></ul><ul><li>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. </li></ul><ul><li>Otra forma es enviando un correo electrónico con un enlace hacia el sitio replicado, donde se le solicitarán nuevamente los datos. </li></ul><ul><li>Una forma de evitar este ataque es usando certificados válidos otorgados por autoridades certificantes. </li></ul>
  20. 20. Seguridad en aplicaciones Web <ul><li>Session Hijacking </li></ul><ul><li>Cuando un usuario autenticado está conectado a una aplicación, es posible que otro tome el control de su sesión. </li></ul><ul><li>Esto se logra obteniendo el ID de la sesión o bien recuperando la cookie de la misma. </li></ul><ul><li>El ID de la sesión puede obtenerse utilizando técnicas de fuerza bruta o mediante la intercepción de mensajes. </li></ul><ul><li>Una forma de evitar este ataque es definiendo tiempos de expiración por inactividad y absoluto. </li></ul><ul><li>Otra forma es usando SSL, que trabaja con datos encriptados. </li></ul>
  21. 21. Fin de la Unidad Gracias por su atención!!!

×