Продолжаем месячник анонимности на Хабре. Перевод статьи об отслеживании пользователя а-ля Cookie без использования Cookie (но с сохранением данных). Технология не нова, но, вроде, не публиковалась, прошу сильно не пинать. Перевод — скорее адаптация и не претендует на побайтную точность. Статья не из категории «Шок! Скандалы-Интриги-Расследования!», а просто довольно достойное чтиво — enjoy!
Существует вариант отслеживания пользователей без использования Cookies или Javascript. Этот способ уже используется приличным количеством сайтов, но мало кто о нем знает. Данный материал — о том, как это работает и как можно защититься.
Метод работает без использования всего нижеперечисленного
- Cookies
- Javascript
- LocalStorage/SessionStorage/GlobalStorage
- Flash, Java или других плагинов
- Вашего IP-адреса или строки User Agent
- Любых методов, используемых Panopticlick
Вместо этого, используется другое хранилище, которое обычно переживает рестарт браузера — кеш. Так что если вы отключили Cookies, заблокировали JS и сидите через VPN — вас всё равно можно отследить.
Демонстрация.
В статье используется демонстрация с формой, которую вкрутить на Хабр не видится возможным (если я неправ — плз дайте знать), поэтому здесь вам понадобится открыть оригинал Нет, это не албанский вирус :)
Пока вы это читаете, нам нужно признаться. Мы вас уже посчитали. Сорри. Хорошая новость: мы не привязываем идентификатор вашей сессии к какой-либо персональной информации. Вот всё, что мы о вас знаем прямо сейчас:
- Количество посещений
- Последнее время визита
- Произвольный текст
Попробуйте поиграться — вбейте какой-нибудь текст, нажмите «Store», закройте браузер, откройте и вернитесь на эту же страницу. Всё еще на месте? [Примечание: русский текст обрабатывается замысловатым образом :) ] Проверьте Cookies: есть что-то? Нет — всё хранится в фейковой контрольной сумме картинки, о которой никто не задумывается. Видели глаз вверху страницы? Он там не для красоты — это наш трекер.
И как это работает?
В целом, так:
ETag, показанный на картинке — это нечто вроде контрольной суммы. Когда изображение изменяется — меняется и сумма. Так что, если у браузера уже есть картинка и ее контрольная сумма, он может послать ее web-серверу для проверки. Сервер проверяет сумму, и если она совпадает (картинка не изменилась) — просто не отправляет картинку, экономя таким образом полосу пропускания (и время) себе и клиенту.
И тут внимательный читатель понимает, что это может использоваться для отслеживания: браузер шлет серверу некую информацию, прежде полученную от этого самого сервера (ETag). Выглядит прямо как Cookies, нет? Сервер может просто выдавать каждому браузеру уникальный ETag, а при повторном соединении — подсматривать его в базе данных.
Технические подробности (и косяки) именно этого демо
Для демонстрации работы данной технологии без использования JS, нам пришлось поискать еще какой-нибудь уникальный для вас кусочек информации, кроме ETag. Картинка загружается после того, как загрузилась страница, но только если в картинке содержится ETag. Как же отобразить остальную информацию, которую мы выдаем прямо в теле страницы? Выходит, что никак, если не использовать JS, который мы не хотим использовать, дабы доказать, что всё работает без JS.
Имеем логическую закольцовку типа «курица-или-яйцо?», что приводит к некоторым, хм, особенностям:
- Информация, которую вы видите, на самом деле относится к вашему предыдущему посещению. Нажмите F5, чтобы увидеть актуальные данные.
- Если вы откроете страницу в режиме, которые не передает ETag (а-ля Incognito Mode в Chrome) — ничего не отобразится. Но как только вы снова откроете страницу в нормальном режиме — всё вернется.
Мы не нашли простого решения этой проблемы. Наверняка, что-то можно предпринять, но мы хотели сохранить код максимально простым. Снова обращаем внимание на то, что эти проблемки не мешают отслеживать пользователей — они только мешают показать пользователям, что за ними следят. На реальных веб-сайтах, использующих эту методику, всё будет работать и без этих заморочек.
Исходники
Что же за проект без исходников? А, да, Microsoft Windows
github.com/lucb1e/cookielesscookies
И как с этим бороться?
Рекомендованный метод прост: если вы собираетесь посетить страницу, на которой вы хотите чуть больше приватности, чем обычно — посетите ее в окне Private Navigation (FF) / Incognito (Chrome) и исключительно через HTTPS. Это моментально исключит атаки типа BREACH (последний хак HTTPS), отключит слежение через Cookies и кеш, как в примере выше.
Всё остальное зависит от вашей степени параноидальности.
На данный момент у нас нет простого ответа, так практически невозможно понять, следит ли данный конкретный сайт за вами через кеш или нет, а полное отключение кеша — большое неудобство для пользователя, т.к. он здорово экономит время и деньги для пользователя, сайтов (которые также экономят трафик) и, в особенности, для мобильных устройств, если у вас не безлимитный 4G-интернет. В особенности, если вы сидите на соединении с большой задержкой (мобильный интернет, частный сектор и т.д.) Если вы уж совсем хотите избавиться от подобной слежки — лучше всего таки полностью отключить кеширование в браузере, но нам кажется, что это того не стоит.
Адд-он для Firefox Self-Destructing Cookies умеет очищать кеш, если вы не пользуетесь браузером некоторое время. Это может быть компромиссным вариантом — вас смогут отследить только в пределах одного посещения, но не между посещениями. С другой стороны — вас всё равно могут отследить в пределах одного посещения, т.к. вы, вероятнее всего, будете использовать один и тот же IP, так что разницы, по-сути, никакой. Зато другие посещения, через некоторое время, уже не могут быть привязаны именно к вам (при условии, что вы позаботились о защите и от других методов слежки).
Мне неизвестен адд-он, способный очищать чек по заданному интервалу (например, раз в 72 часа), но его существование не исключено. Может быть неплохим вариантом для 99% пользователей, т.к. обеспечивает приемлемую защиту без особого ухудшения скорости работы с Сетью.
Update: Адд-он для FF SecretAgent умеет переписывать ETag. При этом можно вести список «доверенных» сайтов, на которых кеширование разрешено, закрыв возможность слежки для остальных. Эффективность адд-она подтверждена здесь.
Если вам понравилась эта статья про слежку, следите за автором в Twitter и Google+!
Вот и всё. Спасибо за внимание. Комментарии по переводу можно оставлять в личку.
Автор: