|

Suscripción gratis
Susurros
Ariadn@
¿Intimidad?
Artículos
Seguridad
Acceso a BD
Autenticación
Comercio-e
Linux
Navegación segura
Control de acceso
CGI
Java
JavaScript
Cookies
Crashes
Agujeros
Spam
Remailers
Anonimato
Correo
seguro
Web seguro
Consejos prácticos
Referencias
Libro de Visitas
|
Marcado de Datos 
Las primeras versiones de JavaScript poseían un agujero de seguridad consistente en
que las propiedades de un documento estaban siempre a disposición del código JavaScript
de otros documentos.
¿Qué riesgos representaba este agujero para la seguridad y la intimidad? Imagina que
tú cargas una página en un frame y que en otro frame escondido (de dimensión tan
pequeña que no aprecias su presencia) existe un programa en JavaScript que va accediendo
a las propiedades de tu página como LINKS, ANCHORS y elementos de los FORM, y los va
transmitiendo a un sitio Web donde son almacenados y procesados.
Puedes pensar que el riesgo no es para tanto. Está bien, imagina los siguientes
escenarios:
- Un documento podría abrir sin tú advertirlo un fichero URL, como por ejemplo file://c:\windows\,
en un frame oculto, que listaría los contenidos de ese directorio en el frame. Un
programa en JavaScript en otro frame podría entonces leer los contenidos (disponibles en
el array links) y enviarlos al servidor.
- Una página Web podría abrir un frame invisible mediante un programa en JavaScript, que
se quedase en ejecución mientras navegas por otros sitios. Cada cierto tiempo, el
programa podría enviar al servidor una lista con los sitios por los que has ido
navegando.
Con el fin de evitar estas pequeñas amenazas a la intimidad y la seguridad, Netscape
creó una solución en la que se tapaban estos agujeros: evitar que un documento pueda
acceder a las propiedades de otro documento, a no ser que provenga del mismo servidor.
Aunque así se solucionaba el problema, también se impedían otras aplicaciones
benévolas en las que se hacía necesario poder leer las propiedades de otras páginas,
por lo que se llegó a una solución de compromiso, llamada Marcado de Datos (Data
Tainting), que permite acceder a las propiedades de otro documento, pero dejando
evidencia de ello.
- Cuando el marcado de datos está habilitado, el código JavaScript en una ventana puede
acceder sin restricciones a las propiedades de otra ventana, sin importar el servidor
desde el que fue cargado el documento de la otra ventana. Sin embargo, el autor de la otra
ventana marca (taints) los valores de las propiedades u otros datos que deberían
ser seguros o privados, y JavaScript no puede pasar estos valores marcados a otro servidor
sin el permiso del usuario.
- Cuando se deshabilita el marcado de datos, un script no puede acceder ninguna propiedad
de una ventana en otros servidor. Puedes comprobarlo en el siguiente
ejemplo.
Para habilitar el marcado de datos, el usuario final debe declarar la variable de
entorno NS_ENABLE_TAINT, poniéndola a cualquier valor, p.e. a "1".
Cómo marcar y desmarcar elementos de datos individuales
Puedes controlar el marcado de elementos de datos (propiedades, variables, funciones,
objetos) mediante dos funciones:
- taint añade marcado a un elemento de datos, y
- untaint elimina el marcado de un elemento de datos.
Ambas funciones toman un solo elemento de datos como argumento.
Copyright © 1997-1998 Gonzalo Álvarez Marañón, CSIC. Todos los derechos reservados.
Criptonomicón es un servicio ofrecido libremente desde el
Instituto de Física Aplicada del CSIC. Para información sobre privacidad, por favor
consulte la declaración de política sobre privacidad.
|