Javascript.RU

Способы идентификации в интернете

Как идентифицировать посетителя?

Когда-то давно для этой задачи были придуманы Cookie.

Однако есть гораздо больше способов идентификации. Многие технологии так или иначе передают информацию о пользователе и компьютере.

Все это позволяет "узнавать" даже посетителя, который специально удалил куки, сменил браузер и перешел на другой IP.

Некоторые примеры подобных сервисов есть в интернете.

Сайт http://panopticlick.eff.org/ использует открыто предоставляемую браузером информацию для идентификации. Ему не нужны Cookie.

Просто зайдите на него и нажмите красную кнопку "Test Me". Мой браузер - уникален. А ваш?

Библиотека Evercookie на http://samy.pl/evercookie/ позволяет сохранять информацию, используя HTML5, Flash и другие средства. Удалить ее, просто почистив Cookie, невозможно.

Ресурсы выше - так, детские игры.

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

На ум приходит как минимум несколько применений.

Реклама..
"Петя, это ты! Ну и что, что куки отключены… Мы тебя узнали, купи слона!"
Бан..
"Вася, тебе же сказали. За-ба-нен! И прекрати менять IP/браузеры."
Наблюдение и сбор информации..
Большой брат смотрит за тобой.

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

Различные технологии позволяют серверу получать информацию о браузере и компьютере.

Фрагменты этой информации образуют подпись, которая, как вы наверно уже видели на http://panopticlick.eff.org/, позволяет успешно идентифицировать компьютер.

Да, Cookie - это "old school". С точки зрения идентификации - работают, но не фонтан. Вася знает про куки. Злой тролль знает про куки и может их удалить или отключить..

Но интересно то, что иногда их и поставить - проблема. Даже если удалять никто не собирается.

Рассмотрим ситуацию... На странице установлен скрипт или даже iframe. Может ли он поставить свои cookie, и тем самым пометить посетителя?

А перед тем, как вы скажете "да, разумеется, любой HTTP-ответ может поставить cookie" - небольшой пример.

Вот iframe. Она загрузит iframe, который ставит cookie в заголовке и в javascript, а затем выведет текущие cookie на экран.

<?php setcookie('sid', rand(),0,'/'); ?><!DOCTYPE HTML>
<html>
<head>
<script>

  document.cookie = 'sid=' + Math.random() + ';path=/'
  alert(document.cookie)

</script>
</head>
<body></body>
</html>

Вот страница для просмотра этого ифрейма. Запустите ее в IE или Safari:

<!DOCTYPE HTML>
<html>
<body>

<iframe src="http://ilyakantor.ru/js/3rd/frame.php" height="100"></iframe>

</body>
</html>

При настройках браузера по умолчанию, вы должны увидеть пустой алерт. Это означает, что кука не поставилась.

Дело в том, что cookie с других доменов имеют особое название "3rd party cookie" и особое отношение со стороны браузера.

Браузеры можно настроить на запрет таких Cookies. Но пример выше не ставит куку даже при настройках по умолчанию. В чем дело?

IE не ставит 3rd party cookies без специальной политики P3P, которую можно передать в серверных заголовках. Эта политика показывает, в каких целях вы "метите" пользователя, что вы собираетесь делать с информацией о нем в дальнейшем.

Здесь все довольно просто - сервер с другого домена должен добавить заголовок, можно вот такой:

header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');

После этого IE будет радостно ставить переданные куки.

... Но это не все. Настройки Safari по умолчанию запрещают прием 3rd party cookies. Аналогичную опцию можно включить и в ряде других браузеров.

Хорошо если такие куки вам не обязательны, а если они - важная часть системы, например, кросс-доменной авторизации?

Чтобы обойти засаду, нужно дать браузеру понять, что ваша кука - не какая-то там "левая", а что пользователь действительно осуществляет навигацию по ифрейму.

Для этого достаточно отправить в iframe POST-запрос, и в ответ на него сервер с другого домена уже может передать cookie, которые браузер примет как родные.

Код фрейма:

<?php 
setcookie('sid', time(),0,'/');
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); 

?><!DOCTYPE HTML>
<html>
<head>
<script>

alert(document.cookie)

</script>
</head>
<body></body>
</html>

Код страницы для просмотра в Safari или другом браузере с запретом 3rd party cookies:

<!DOCTYPE HTML>
<body>
<script>

onload = function() {
    var div = document.createElement('div')
    document.body.appendChild(div)

    div.innerHTML = '<iframe src="" name="iframe"></iframe> \
<form method="POST" target="iframe" action="http://ilyakantor.ru/js/3rd/frame_hack.php"></form>'

    div.getElementsByTagName('form')[0].submit()
}

</script>
</body>

Попробовали? Должно быть все в порядке.

И еще пара заметок.

  • Строго говоря, это не совсем хак, ведь такой iframe - не чужой внешнему окну. В него происходит POST.. А значит, скорее всего такой подход будет работать и далее.
  • P3P-политика будет работать и для других объектов: подключаемых скриптов, картинок и так далее. Но... Только в IE. Другие браузеры ее не уважают, так что для Safari пока только iframe.

С помощью javascript из браузера можно извлечь массу всего интересного. И не только извлечь, но и сохранить.

Этим ёмким словом называются различные варианты сохранения информации в браузере.

Если подробнее:

  • userData (IE*)
  • HTML5 localStorage (все современные браузеры)
  • HTML5 database (Chrome, Safari, Opera)

Всё это позволяет сохранить информацию в браузере, которая, в отличие от cookie, не пересылается на сервер при HTTP-запросах.

Более подробно о технологии вы можете почитать на сайте http://browserpersistence.ru/ и в статье Хранение данных на клиенте. DOM Storage и его аналоги..

Пример - ниже. Там iframe с адреса http://javascript.ru/files/id/persistence.html, по нажатию на Save сохраняет данные из текстового поля во все доступные хранилища, по Load - восстанавливает.

Кнопка Refresh перегружает страницу. А впрочем, можно и браузер переоткрыть, разницы не будет.

С помощью Javascript доступен замечательный объект nagivator, содержащий полную информацию о браузере посетителя и название его OS.

<pre>
<script>

  for(var prop in navigator) { 
    if (navigator[prop] instanceof Object || navigator[prop]==='') continue
    document.writeln(prop+": "+navigator[prop])
  }

</script>

Многие из этих свойств не изменяются даже при обновлении мажорной версии браузера, не говоря уже минорной.

Для полноты картины все об экране посетителя расскажет объект screen.

<pre>
<script>

  for(var prop in screen) { 
    if (navigator[prop] instanceof Object || screen[prop]==='') continue
    document.writeln(prop+": "+screen[prop])
  }

</script>

Плюс этой информации - в том, что этот компонент подписи очень стабилен и не меняется почти никогда.

Для всех браузеров, кроме IE, этот объект содержит информацию о плагинах и их версии. Посмотрите сами:

<pre>
<script>
  var prev
  for(var i=0;i<navigator.plugins.length;i++) { 
    var plugin = navigator.plugins[i]
    var plugin = plugin.name+" "+(plugin.version || '')
    if (prev == plugin ) continue
    document.writeln(plugin )
    prev = plugin 
  }

</script>

Вася обновил браузер? Ничего! Большинство плагинов по-прежнему такие же и тех же версий.

В IE все сложнее. Плагины там являются компонентами ActiveX, поэтому получить их список нельзя. Однако, есть workaround - обернуть создание компонентов в try..catch:

try {
  new ActiveXObject('плагин')
  // плагин есть
} catch(e) {
 // плагина нет
}

Все несколько сложнее, если нас интересует еще и версия, однако делается без особых проблем, и даже без VBScript.

Замечательная статья по этому поводу: Detecting plugins in Internet Explorer.

Обнаруживаемые плагины:

  • Adobe Reader
  • Flash Player
  • Java Runtime Environment
  • QuickTime Player
  • RealPlayer
  • Shockwave Player
  • Windows Media Player

Весьма внушительный список, который можно даже немного порезать - и все равно будет неплохо.

Объект Date содержит временную зону посетителя.

alert( -new Date().getTimezoneOffset()/60 )

Это еще один стабильный компонент для идентификации.

Потенциально ActiveX может очень многое. Но при обращении к большинству из них браузер запросит подтверждение у посетителя.

Для идентификации, особенно скрытой, такое явное раскрытие себя ни к чему.

Однако, получить список системных шрифтов при помощи ActiveX - проще пареной репы. И без всяких вопросов.

Следующий пример будет работать, только в IE.

<object id="dialogHelper" classid="clsid:3050F819-98B5-11CF-BB82-00AA00BDCE0B" width="0px" height="0px"></object>

<script>
onload = function() {
  var dlg = document.getElementById('dialogHelper')

  var fonts = []
  for (var i=0; i<dlg.fonts.count; i++) {
    fonts.push('<div style="font-family:' + dlg.fonts(i+1) + '">' + dlg.fonts(i+1)+ '</div>')
  }
  document.write(fonts.join(""))
}
</script>

Как известно, у Flash есть свое локальное хранилище, в которое можно записывать данные и доставать их оттуда.

При этом Flash может замечательно взаимодействовать с Javascript, см. статью Javascript <-> Flash мост.

То есть, самый простой способ - это сохранить идентификатор посетителя и потом проверять его по необходимости.

Важно, что в отличие от методов хранения HTML 5, flash-хранилище привязано не к домену страницы, а к домену, с которого загружено flash-приложение.

Иначе говоря, flash'ка с домена http://ads.com, находясь на странице http://a.com и http://b.com имеет одинаковое хранилище. Даже если эти страницы открывают в разных браузерах - хранилище разделяется, т.к. привязано не к браузеру, а к пользователю компьютера (на уровне OS).

Для получения сведений из Flash можно использовать объекты:

Таким образом можно получить:

  • Сведения об экране.
  • Сведения об операционной системе и ее возможностях.
  • Список системных шрифтов.

Всю эту красоту можно передать либо в Javascript, либо напрямую на сервер.

Flash работает даже с выключенным javascript.

Из Flash можно проверить, включен ли JS и, при необходимости, связаться с сервером напрямую, используя сокеты: "Тук-тук, я флеш, под IP таким-то сейчас сидит Вася..."

...Барабанная дробь.. На сцену выходит Java!

UPDATE 28.02.2011:

До версии 6.22 Java могла выдавать MAC-адрес и внутренние адреса. Сейчас эту возможность убрали, но можно, например, собрать все внутренние имена адаптеров, а также узнать сетевое имя, информацию о памяти, процессоре, шрифтах и т.п.

При этом Java может как передать данные в Javascript, так и самостоятельно отправить POST-запрос с информацией.

Часть статьи ниже не будет работать на последней Java. Будет переписано.

Здесь нужно немного углубиться в детали. Дело в том, что в интеренет есть много примеров на эту тему. Но, как правило, они не работают.

Вот это можно встретить везде (Firefox only?):

var location = window.location
var address = (new java.net.Socket(location.host, location.port || 80)).getLocalAddress()

alert(address)

Как видно, доступ к java идет напрямую из javascript, то есть не нужно загружать апплет. У меня это сработало только в Firefox

А вот - тот же пример, но с получением MAC-адреса.

var location = window.location
var address = (new java.net.Socket(location.host, location.port || 80)).getLocalAddress()

var mac = java.net.NetworkInterface.getByInetAddress(address).getHardwareAddress()
var s = ''
for(i=0;i<mac.length;i++) {  // привести byte[] к читаемому виду 
	var n = mac[i]  
	if (n<0) n = 256+n
	s += n.toString(16)
}
alert(s)

Что делать в других браузерах? Да просто загрузить Java-апплет (код будет дальше).

Но!.. И тут есть одно "Но". Браузер Safari заботится о посетителях. Как мы видели выше, он по умолчанию не принимает 3rd party cookies.

И в отношении Java он весьма суров: попытка доступа к сокету вызовет "Permission denifed":

// этот java-код не сработает
Socket socket = new java.net.Socket(getCodeBase().getHost(), port);
InetAddress address = socket.getLocalAddress();

Таким образом, получить текущий адрес, его IP и MAC адаптера не получится.

Но, с другой стороны, никто не мешает получить все доступные адаптеры, их MAC и IP, вот так:

Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces();

while (niEnum.hasMoreElements()) {
    NetworkInterface ni = niEnum.nextElement();
    if (ni.getHardwareAddress() != null && !ni.isLoopback() && ni.isUp()) {
        // MAC - в ni.getHardwareAddress()
    }
}

Если у вас установлена Java, то в iframe ниже вы увидите свой MAC-адрес. Для простоты тут пропущено получение IP. Добавить его, как и данные по памяти, процессору и т.п. - весьма несложно.

Исходник:

Есть ли хоть одна технология, которая "не стучит". Первая мысль была - CSS.

... Как я ошибался.

Современный CSS поддерживает media-query, то есть условия на:

  • device-width
  • device-height
  • device-aspect-ratio
  • color-index

Использовать это очень просто. Достаточно добавить несколько условий вида:

@media screen and (min-device-width: 0px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=0); } }
}

@media screen and (min-device-width: 800px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=800); } 
}

@media screen and (min-device-width: 1024px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=1024); } 
}

@media screen and (min-device-width: 1280px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=1280); } 
}

@media screen and (min-device-width: 1440px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=480); } 
}

Как видно, условия перекрывают друг друга, и в каждом указана минимальная ширина экрана. Например, при экране 1280px будет использован фон media.php?key=...&device-width=1280.

Иначе говоря, на сервер отправится запрос, который скажет, что у посетителя экран - 1280 пикселей. При этом параметр sid может использоваться для сессии при отключенных cookies.

Да, это не внутренний IP, не МАС, но оно работает с отключенными JS и Cookies. А это уже чего-то стоит, информация стабильная и очень конкретная. Как компонент цифровой подписи - в самый раз.

Можно ли использовать History для хранения идентификатора посетителя? Да, но не везде.

Для этого вспомним, что CSS-ссылка посещенная отличается от непосещенной по цвету.

Можно создать ссылку с нужным href и, используя getComputedStyle получить цвет, т.е. выяснить, посещал ли пользователь ссылку.

Любой идентификатор можно представить в двоичном виде, например 867865 = 11010011111000011001.

Для записи идентификатора - создаем iframe и последовательно постим туда адреса вида /visited/0/1, /visited/1/0, /visited/2/0, /visited/3/1 .. и так далее, с конца бинарного числа к началу. Так что для каждого бита будет посещена одна из ссылок: /visited/n/1 или /visited/n/0.

Для загрузки идентификатора достаточно создать такие ссылки и проверить, какие из них посещены и, таким образом, восстановить число. 32 ссылки - это 32-битный идентификатор, его хватит примерно на 4 миллиарда посетителей.

Надо сказать, что такой способ доступа к History через CSS известен уже много лет, и дыра постепенно закрывается браузерами, см. например https://bugzilla.mozilla.org/show_bug.cgi?id=147777.

С IP все просто, но не совсем. Есть ведь динамические IP.

Что если Вася поменяет динамический адрес, как его отследить? А очень просто - записывать в подпись не только сам IP, а провайдера, который его выдал.

Так что переподключение Васю отчасти скроет (если ип другой), но провайдер в подписи останется тот же, это упростит идентификацию.

Также по базе GeoIP можно получить регион и страну.

Да, это не 100% надежно, но подпись - компонентная. Каждый компонент может быть неуникален, может меняться, но все вместе они однозначно идентифицируют посетителя.

Замечательный и очевидный источник информации:

  • User-Agent
  • Accept
  • Keep-Alive
  • Via (proxy)
  • Редкие заголовки

Заголовок User-Agent может содержать не только информацию о браузере, но и OS, плагины, детали сборки.

Для более надежной обработки User-Agent можно распарсить на компоненты и использовать их как независимые части подписи, чтобы обновление одного из плагинов не сильно на ней отразилось.

Использовать кэш браузера можно различными способами. Самый простой - ETag.

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

В iframe ниже - ваш уникальный ETag.

Обратите внимание - даже при перезагрузке страницы по Ctrl-F5 кэш ифрейма не очищается! То есть, сервер вас по-прежнему будет узнавать, проверьте сами...

Идентифицировать браузер можно и при заведомо кривом UserAgent'е. Достаточно посмотреть поддержку различных фич. Причем, для многих из них даже javascript включать не обязательно.

  • Количество одновременных HTTP-соединений
  • Поддержка link prefetching
  • Поддержка conditional comments
  • CSS Hacks and Features
  • ...

Скрыть свой браузер и его версию при грамотной проверке фич довольно сложно.

TCP-протокол с радостью предоставит информацию о вашей операционной системе.

Дело в том, что в различных OS по-разному настроен TCP-стек. А роутер, как правило, не меняет пакет, а просто передает его дальше.

Характеристики TCP-пакетов формируют свой фрагмент цифровой подписи.

Для его распознавания проще всего применить утилиту p0f.

Работает очень просто.

  1. Вешается как фильтр пакетов и слушает сокет.
  2. Сохраняет TCP-сигнатуры пакетов в кеш в памяти, держит их N секунд.
  3. Веб-сервер отправляет на сокет сообщение "А кто это только что зашел под IP X.Y.Z ?"
  4. p0f выдает OS, которую вычисляет по своей базе из сигнатуры (можно пропатчить, чтобы выдавал саму сигнатуру).

Из всей этой красоты, описанной выше, строится компонентная цифровая подпись.

Алгоритм на сервере умеет сравнивать подписи. Пример такого алгоритма вы можете увидеть в статье на https://panopticlick.eff.org/ : How Unique is Your Browser?.

Но Pantoptclick - открытый проект. Он использует лишь небольшую часть приемов, описанных в статье, и при этом - весьма эффективен. Реальный алгоритм может быть сложнее и гораздо (в десятки и сотни раз) эффективнее.

Итак, мы поговорили о том, как идентифицировать посетителя. А теперь - поговорим, как скрыться.

Способов идентификации очень много. "Стучит" буквально все.

Одного простого средства типа "privacy mode" в браузере для скрытия недостаточно. Нужно одновременно использовать несколько защит:

Privacy/incognito mode
Закроет возможность идентификации через кеш и различные виды browser storage. Желательна последняя версии Flash, т.к. хранилище ранних версий не интегрировано с браузером.
NoScript
Плагин для Firefox. Перекроет запуск скриптов, апплетов, flash, silverlight и другое активное содержимое. Таким образом будет закрыты механизмы идентификации через javascript, java, flash.

Жаль, для других браузеров такого нет.

Клиент к сети Tor, в частности расширение TorButton для Firefox
Ваши запросы будут приходить с разных IP. Некоторые ресурсы, например Wikipedia, блокируют Tor.
Локальный proxy, который правит заголовки.
Заголовки типа User-Agent, Accept и т.п. ни в коем случае нельзя резать.

Если браузер - Firefox (это можно обнаружить по браузерным фичам), а User-Agent порезан или IE - это выделит из толпы самым ярчайшим образом.

Самое надежное - это поставить самые типичные заголовки для в вашей версии браузера. А любой нестандарт - убрать. Слиться с толпой.

При аккуратном применении этих мер - вас все равно можно будет как-то идентифицировать.

Например, отключенный javascript, отключенные cookies - это выделяет из толпы. Tor - тоже паттерн (запросы с разных IP в рамках одной сессии).

Но фингерпринтинг - вероятностный метод. Он часто позволяет идентифицировать посетителя с вероятностью, близкой к 100%, но eсли посетитель предпринимает серьезные усилия по анонимизации, а общее количество посетителей очень большое, то эта вероятность падает.

Реально достичь значения - 1 из 50.000. Для ресурсов с сотнями тысяч посетителей такое посещение достаточно анонимно.

P.S. После публикации статьи порекомендовали еще behavior clientCaps как источник информации, но вся информация оттуда доступна через navigator и screen, так что в статью этот источник не добавлен.


Автор: Dmitry A. Soshnikov, дата: 8 октября, 2010 - 14:55
#permalink

Интересная статья, спасибо.

P.S.:

Ссылка "Detecting plugins in Internet Explorer" битая (с форматированием проблемы, сама ссылка рабочая).

Название и содержание раздела "Как скрыться?" несколько параноидальны Анонимизация в большинстве случаев канула в лету.


Автор: Илья Кантор, дата: 15 октября, 2010 - 11:19
#permalink

Link fixed, thanks.


Автор: daspisch (не зарегистрирован), дата: 8 октября, 2010 - 15:02
#permalink

шедеврально! такой замечательной компиляции многих методов определения пользователя нигде не видел! спасибо автору


Автор: anqxyr (не зарегистрирован), дата: 8 октября, 2010 - 15:07
#permalink

https://addons.mozilla.org/en-US/firefox/addon/6623/ - расширение для Огнелиса для удаления Local Shared Objects.
Способ с кэшем браузера очень сильно впечатлил.
По поводу способа с css. Я заблуждаюсь, или от него спасают только браузеры вроде Lynx? И если да, то оправданны ли вообще попытки от него защититься? Мне кажется, что информация о том, что кто-то пользуется текстовым браузером намного более ценна в плане определения личности, чем разрешение экрана.


Автор: Гость (не зарегистрирован), дата: 12 октября, 2010 - 01:05
#permalink

Фигня. Нет никакой возможности достоверно определить пользователя по http. Особенно про Etag вобще не в тему


Автор: Sulla, дата: 12 октября, 2010 - 17:51
#permalink

Теперь собрать все эти методы в одну библиотеку.
Прикрутить интерфейс, на подобие:
please_set_user('ВАСЯ');
echo please_get_user(); // = 'ВАСЯ'

Будет вообще замечательно)


Автор: Чистяков Денис (не зарегистрирован), дата: 14 октября, 2010 - 22:47
#permalink

Очень, очень интересный обзор, особенно порадовали CSS методы, не думал о таком, а ведь действительно очень просто, а через персональные хаки можно определить почти любой браузер + медиа квери.
Спасибо за отличную статью.


Автор: Чистяков Денис (не зарегистрирован), дата: 15 октября, 2010 - 20:26
#permalink

Единственная проблема с CSS вариантами, слишком большое количество запросов для сохранения всей возможной информации об одном клиенте (


Автор: stokito (не зарегистрирован), дата: 20 октября, 2010 - 15:12
#permalink

Могу ошибаться, но можно ещё идентифицировать по сертификатам x.509. Если это так, то можно про них написать в обзоре?


Автор: Гость (не зарегистрирован), дата: 6 ноября, 2010 - 18:34
#permalink

Дауж. Сколько способов воровать данные с компьютера пользователя. И шпионить за людьми. С ие всё понятно, он всегда отличался дырявостью, что любой начинающий хакер мог любой вирус запустить на компьютер посетителя страницы. А вот остальные браузеры вроде пишут о своей безопасности, а оказывается врут. Печально. Странно что антивирусы от всех этих способов не защищают.


Автор: B@rmaley.e><e, дата: 7 ноября, 2010 - 21:56
#permalink

Кого воровать? Вы статью вообще читали? Здесь описаны методы идентификации пользователя, а не воровства чего-либо с его ПК. Как (и зачем) антивирусам защищать от этого - непонятно.


Автор: Гость (не зарегистрирован), дата: 5 декабря, 2010 - 14:45
#permalink

Статью я читал. Да, не совсем правильно сказал, не антивирусы, а разработчики браузеров должны были об этом позаботиться. Отдавать неизвестно кому системную информацию: MAC-адрес, Внутренний IP локальной сети, Сетевое имя, Процессор, память, шрифты, полную информацию о браузере посетителя и название его ос, и т.д. Далее, без ведома пользователя сохранять левые куки, писать неизвестно что в локальное хранилище, это уже серьезные проблемы безопасности. По крайней мере, я думаю, браузеры должны предупреждать о таких попытках, и предлагать занести такой сайт в список опасных.

Но, главное не в этом. Главное мне не понятно для чего, кроме как навредить пользователю, это может использоваться. Если только, например, анонимное голосование за премию в миллион долларов, но это же бред. Для нормального сайта не могу представить зачем это надо.

Забыл сказать, автору, безусловно, спасибо за статью. Единственно, пожелание, дополнить статью, как защитится от таких вредоносных сайтов, использующих методы тотального слежения за пользователем.


Автор: B@rmaley.e><e, дата: 5 декабря, 2010 - 15:28
#permalink

Чем плохо отдавать шрифты? Это даже удобно - можно указать тот шрифт, который у пользователя есть.
Информация о браузере отдается для того же - в зависимости от браузера и оси можно выдавать различный контент (в соответствии со спецификой браузера)
Сетевое имя, процессор, MAC, память браузеры не отдают. Это уже проделки всяких java, flash, silverlight.
Запись в локальное хранилище нужно различным веб-приложениям. Представим какой-нибудь онлайн фотошоп, хранящий свои настройки в локальном хранилище. Это опасный сайт? Простой пользователь может даже не знать о том, что это такое и зачем оно. Очевидно, что он в любом случае будет кликать "Да".


Автор: Skipp, дата: 19 января, 2011 - 14:10
#permalink

А чем собственно это может навредить?
Если вы как-то, что-то от кого-то скрываете, тогда скорее всего вы намерены или будете намерены в ближайшем будущем, кому-нибудь навредить.
Все эти вещи придумали не просто так, а для развития.
Скрывается и прячется тот, кому есть чего скрывать, а кому есть что скрывать не всегда хорошими делами занимается, а чаще всего наоборот.


Автор: Гость (не зарегистрирован), дата: 19 января, 2011 - 22:31
#permalink

Скажите, пожалуйста, ваше ФИО, домашний адрес и телефон.

В противном случае все ваши слова - голословное заявление.


Автор: Колбасьев (не зарегистрирован), дата: 27 июня, 2011 - 19:52
#permalink

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


Автор: Гость (не зарегистрирован), дата: 29 августа, 2011 - 15:54
#permalink

Вы путаете позиции. Личные данные, в отличие от данных ОС, могут быть использованы для оформления документов.


Автор: Гость (не зарегистрирован), дата: 4 сентября, 2015 - 17:54
#permalink

Какой вы "прогрессивный"... Любая личная инфо. это не ваше дело! Вот и весь прогресс...


Автор: Гость-параноик (не зарегистрирован), дата: 19 декабря, 2010 - 23:06
#permalink

Автору статьи - респект и уважуха
Но... Представьте такую ситуацию. В пределах текущей интернет-сессии мы быстро поменяли операционную систему (другой часовой пояс, другое разрешение монитора; другие локальные хранилища других Flash-, Ever- и просто cookies, и всех еще неизвестных локальных идентификаторов...), другой браузер (другие плагины, другой кэш...).
Смотрите, сколько сразу отпадает идетификаторов! А всего-лишь одна виртуальная машина...
Прежними идентификаторами остаются:
-IP (если не динамический). Решается прокси-сервером, но, в конце концов, не такое уж редкое явление - несколько разных сессий из-под одного IP (NAT, например).
-MAC-адрес, процессор, память (передаются с помощью Java; но его можно не устанавливать на VM).
Реально должно помочь, если нужно скрыть связь между аккаунтами Google, например.
Теория хороша... Но нужно попробывать. Критикуйте.
P.S. Может кому пригодится - о прокси: http://www.freeproxy.ru/ru/free_proxy/faq/anti_proxy.htm


Автор: bbck_23hd (не зарегистрирован), дата: 6 января, 2011 - 15:28
#permalink

Сейчас Panopticlick'у уже не светит определить как и откуда кто зашел, т. е. идентифицировать посетителя, как впрочем и вам то же...


Автор: слава (не зарегистрирован), дата: 3 июля, 2011 - 19:43
#permalink

спасибо огромное за статью


Автор: neuronus (не зарегистрирован), дата: 22 сентября, 2011 - 22:07
#permalink

Спасибо за статью!
Автору - респект и +100500 в карму


Автор: Гость (не зарегистрирован), дата: 31 октября, 2011 - 04:56
#permalink

Никакого MAC'а ни в одном браузере не увидел. ETAg в ие меняется при нажатии ctrl+f5.


Автор: Гость (не зарегистрирован), дата: 2 ноября, 2011 - 19:17
#permalink

Может кто мне подскажет - абсолютно новые установки вынды c IE 9 без плагинов (к примеру виртуалки или просто недавние или неопытные юзеры - как с магазина взяли так и ничего не ставят)

Юзерагент смотриться примерно так:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
тут не надо цепляться если что лишнее. просто стандартныц какой-нить взять

плагинов нет, флеша нет, кукисы могут быть почищены клинером, ир может быт разное, также как и часовая зона (сам сменил при след заходе). тут я туряюсь.

ставил себе на сайт - больше сотни таких машин. Как мне идентифицировать совпадения под разными логинами одного компютера. Прще когда поставлены плагины. А если пусто? Никак не могу найти критерий по которому можно было бы сказать, что это все-же разные машины

Слудеющие переменны я считаю юзер может менять на свое усмотрение когда угодно, мы это не учитываем
- часовая зона - менять не сложно
- размер екрана, цветность
- соксы
- кукисы (как и история с разных виртуалок гостевых не непесекаются) или прсто почищены
- флеша нет плагина
- java нет

Зацепиться бы за какой-нить MAC адрес или дату установки винды с секундами или название видяхи...

Смотрел HTML5 - там есть плагин google gears - так его тоже нужно доставлять.

Интересуют средства HTML. Заставить всех ставить флеш тоже нереально(((


Автор: Гость (не зарегистрирован), дата: 11 ноября, 2011 - 08:17
#permalink

МАС адрес ваш javascript не определяет. В firefox все разрешено, только скрипт ваш не работает. Попсовая статья. Без мак адреса ничего вы не идентифицируете. На всех ноутах стандартное разрешение экрана, одна и та же винда и набор шрифтов. А если ты дизайнер с нестандартным монитором, мак осью и кучей шрифтов, перезагрузи комп под виндой када нада раствориться. Детский сад, а не идентификация у вас тут.


Автор: Гость-Моджахед (не зарегистрирован), дата: 20 декабря, 2011 - 06:10
#permalink

Ваш компьютер уже записан, ваша семья и родственники будут допрошены, и однажды ночью за вами придут…


Автор: PMobile (не зарегистрирован), дата: 18 ноября, 2011 - 02:56
#permalink

Отличная статья! Уважаемый автор, подскажите, как мне получить и выводить Etag так как у вас? Заранее благодарю за ответ.


Автор: Гость-Моджахед (не зарегистрирован), дата: 20 декабря, 2011 - 06:04
#permalink

Статья хорошая, спасибо. Но все эти методы по одному, или даже порциями не имеют смысла, если отсутствуют грамотные алгоритмы обработки и систематизации данных. Без матана тут никак.
--
А по поводу "анонимизации" от себя лично вот что скажу. Считаю себя достаточно "добропорядочным" гражданином, страшных помыслов не имею, налоги плачу вовремя... etc. Но я не хочу чтобы о моих телодвижениях было ещё кому-нибудь известно кроме меня, так как сам очень уважаю свободу в человеке и не ограничиваю её в окружающих. Так почему кто-то должен ограничивать мою свободу "считая" меня? пусть даже и предлагая всякую фигню, которая (возможно) меня интересует, но сейчас мне абсолютно параллельна...


Автор: Jason Bourne, дата: 21 февраля, 2012 - 08:01
#permalink

Есть ли аналог ClienCaps для Firefox?
Или как сделать в Firefox то же самое?


Автор: ВладТ (не зарегистрирован), дата: 25 мая, 2012 - 05:58
#permalink

Спасибо за статью. Действительно, очень полезен обзор разных методов в одном месте.
А рассуждения о том, что идентификация пользователя якобы нарушает его свободу - это кликушество. Типа "не заводите себе ИНН, а то попадете в ад!" Пока я не замышляю какого-нибудь обмана, мне пополам, присваивает ли мне кто-то какие-то номера. На мою свободу жить честно это никак не влияет. Тут речь идет о защите от всякого рода злоумышленников, которым как раз анонимность нужна, как воздух.


Автор: Гость (не зарегистрирован), дата: 4 сентября, 2015 - 18:17
#permalink

Зря Вы так, хотя и благодарность выражаете.
А что по поводу ИНН, то принимая его, Вы отказываетесь от Своего имени. заменяя Его числом и уподобляетесь вещи. Скажите, Вас Мама назвала просто каким-то числом или в честь какого-то славного предка? А в школе к Вам обращаясь с просьбой выйти к доске, называют вас сухим числом или по Имени? - Просто про ИНН проблему Вы немного лизнули-куснули и строите из Себя кого-то.
Пока Вы ничего не замышляете говорите? А как насчёт того если против Вас замышляют, тот же ИНН к примеру?..


Автор: Гость (не зарегистрирован), дата: 26 мая, 2012 - 17:39
#permalink

извини не удержался' просто хоча посмотретиь как" у вас это работпет


Автор: Гость (не зарегистрирован), дата: 26 мая, 2012 - 17:39
#permalink

извини не удержался' просто хоча посмотретиь как" у вас это работпет


Автор: OlegSmirnov, дата: 26 мая, 2012 - 22:43
#permalink

Всё это, конечно, интересно, но это может помочь только в идентификации компьютера, а не человека :-) Если захочет напакостить - сходит в интернет-кафе и т.п.

Вот лет так через ...дцать будут прям в роддоме при рождении вшивать куда-нибудь, откуда уже не вытащить, какую-нибудь микросхему с идентификационным номером и везде все иднтификации - от банков и налоговой до частных сайтов - по этому номеру :-)


Автор: DmitryK1, дата: 6 ноября, 2012 - 11:44
#permalink

Я постоянно пользуюсь хромом и синхронизацией плагинов. Пришёл куда-то, залогинился под хромом, поработал, потом удалил и ушёл. Список плагинов и настроек есть. Хотя бы по набору плагинов меня можно будет узнать почти на 100%
А если ещё модели поведения использовать для контроля, так и это не надо будет. А скорость набора на клавиатуре, интервалы между нажатиями и тп. могут сказать о человеке очень многое.


Автор: Гость (не зарегистрирован), дата: 4 сентября, 2015 - 18:31
#permalink

Вот вот, а 1-й шаг к этому это ИНН. Такие вещи как и нравственное падение человечество с последующим принятием сына погибели, осуществляются и внедряются постепенно, иначе оно бы со лба не прошло бы. Другое дело кому это надо (кто хочет не допустить выхода человечества в космос). А история потому и продолжается, что есть ещё свобода воли и диалог человека с Богом... Вот через ИНН (потом карточки как эволюц. продолжение и самое главное чип и печать (начертание) на лоб и на правую руку) как раз и хотят досрочно завершить историю какие-то психи. - Нас не уничтожит никакия катастрофа и катаклизм, вот только если мы не перегызём друг друга как зайцы... А то что тут некоторые просят не говорить всех секретов, пусть идут и (простите) сами пускай сразу вешаются в пользу будущности всего человечества. Поэтому не слушайте их, говорите и помогайте нам как Всеславный Сноуден...


Автор: Гость (не зарегистрирован), дата: 27 июня, 2012 - 01:34
#permalink

Статья отменная! Давно искал ресурс, где было бы собрано всё в кучу с примерами и описаниями. Аффтору спасибо! Но на данный момент очень актуален такой вопрос: в последнее время не могу победить один вредный забугорный сайт.. каким образом он меня идентифицирует???? юзаю user agent switcher с расширенным набором юзерагентов + мозилла без плагинов, джавы и флеша,куки не сохраняю,+соксы.. перед каждым запуском мозилы чищу систему склинером. Раньше при всех тех же условиях, при при смене юзерагента на новый меня определяли как нового юзера. Сейчас смена юзерагента не помогает, смена разрешения экрана не помогает..... даже не знаю в какую сторону копать... Буду очень благодарен за советы и рекомендации.


Автор: Гость (не зарегистрирован), дата: 15 февраля, 2014 - 18:59
#permalink

Mozilla?

Откройте about:config и посмотрите переменную urlclassifier.keyupdatetime.https://sb-ssl.google.com/safebrowsing/newkey с уникальным номером.
Вообще мозилла стала казаться стремной, но альтернативы пока не выбрал.


Автор: Гость (не зарегистрирован), дата: 4 сентября, 2015 - 18:39
#permalink

У меня тоже самое с 4пда творится. Нужно учесть что у таких больших ресурсов имеются и своя парачка программеров и, если надо. они за вас вплотную возьмутся, мотивируя это, как сейчас С.Ш.А., "госбезопастностью и нацинтересами". Пускай извеняют, но продолжение истории человечества считаю приоритеней, как писал выше про ИНН.
Поначалу что-то прокатывало, но что-то не достаточно, поэтому присоединяюсь...


Автор: Гость (не зарегистрирован), дата: 9 июля, 2012 - 16:01
#permalink

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

PS : С примерами тут увы недоработка. 1) МАК действительно не отображается ;
2) Окно в JavaScript (кнопка Refresh)- браузер выдаёт предупреждение "не будь дураком!"
3) Ну, и значение в окне iframe - при вкл. и откл. JavaScript, тоже меняется.
Может только это сугубо мои настройки системы так влияют.


Автор: Гость (не зарегистрирован), дата: 8 октября, 2012 - 03:34
#permalink

Есть ещё кое что: типичное поведение на сайте. Некоторые делают одно и то же в постоянной последовательности. Как ещё одна часть подписи - может сгодиться.


Автор: Signal (не зарегистрирован), дата: 25 января, 2013 - 05:20
#permalink

Так как генеритсья этот ETAG?
получается первые 5 символов на моем компьютере всегда одинаковые для всех браузеров, меняются только рандомно остальные.
Есть сайт как раз и палит меня по этому ETAGu
как он генерицо/вычисляецо/получаецо ?
нужное подчеркнуть


Автор: Signal (не зарегистрирован), дата: 25 января, 2013 - 14:28
#permalink

Автор, покажи код получения ETAG в твоем IFRAME


Автор: Гость (не зарегистрирован), дата: 25 февраля, 2013 - 11:46
#permalink

согласен, я тоже не могу найти конкретного примера ETAG.
и ещё и пример для Local Storage и TCP
кто знающий - поделитесь инфой или ссылкой


Автор: DekaR (не зарегистрирован), дата: 28 мая, 2013 - 11:55
#permalink

ПРисоединяюсь к вопросу про Etag. Как реализовано ? Большинство инструкций в интернете обновляют тег при нажатии F5 в опере


Автор: Гость (не зарегистрирован), дата: 19 февраля, 2014 - 11:27
#permalink

function get_file_etag($filename) {
return sprintf('%x-%x-%x', fileinode($filename), filesize($filename), filemtime($filename) );
}


Автор: Гость (не зарегистрирован), дата: 4 июля, 2013 - 08:16
#permalink

У меня в сафари 6.0.4 не работают ни один из методов "хака" кук третьих сторон.


Автор: MikeA (не зарегистрирован), дата: 7 июля, 2013 - 19:53
#permalink

А про номер телефона 3G модема чего-нибудь известно? Как получить, при каких условиях? Покрайней мере МТС сообщает номер телефона всяким файлопомойкам типа depositfiles.


Автор: Гость (не зарегистрирован), дата: 2 декабря, 2014 - 03:35
#permalink

У меня каждый раз новый Етэг, что за беда?


Автор: Гость (не зарегистрирован), дата: 2 декабря, 2014 - 03:37
#permalink

Кеш, куки - разрешены, но Etag у меня постоянно меняется даже при обновлении стр.


Автор: Гость (не зарегистрирован), дата: 6 декабря, 2014 - 06:53
#permalink

Познавательно, полезно, большое спасибо


Автор: Гость (не зарегистрирован), дата: 4 мая, 2015 - 08:43
#permalink

Кэш браузера

проверял , не уникален . Да и большинство особо уникальной информации не дали . Половина даже не запустилась . Firefox 39


Автор: Гость (не зарегистрирован), дата: 5 сентября, 2015 - 22:32
#permalink

TorButton для Firefox удалён по вашей ссылке (как и нек. другие). Исправьте.


Автор: Секретный человек (не зарегистрирован), дата: 26 октября, 2015 - 08:56
#permalink

Статья супер, но добавлю ещё сюда, что можно скрыть Referer заголовок по которому нашли сайт, посылать или нет, скрыть версию и название браузера можно, но сложно, так же скрыть информацию о ОС, если это конечно можно, так же IP без определения региона и города, но страну все равно можно определить, даже пусть TOR работает через WI-FI общий, разрешение экрана можно менять, куки чистить ccleaner , local / temp all delete / удалять всё при закрытии браузера, у google chrome такого не будет, сам браузеро не использовать google.chrome , но двигатель можно, в общим можно при желании делать это и в WMWARE , с тором , сменой MAC , IP , отключение Java и отключение Flash , только разрешение экрана, я не пищу инструкции как это сделать можно, но скажу, что анонимность сделать 100% можно, до такого, что не найдут, я лично пищу тут без анонимности, но сделать 100% анонимность можно в теории, главное знать какая ОС уникальная, так же браузер, какие программы и службы запускаются, особенно у Windows SVCHOST.EXE / Explorer.exe в интернет лезет сам по себе. уже нуже фаер волл, а если черви и трояны, то вообще можно сказать все данные в подарок ушли ещё кому то, так же TOR.EXE - Не спасет, ведь Flash передаёт, как раз последний версии информацию ВСЮ о компьютере, даже IP Реальный, а не TORA , вот почему уже скрыться нельзя. Если он конечно не portable / или не встроенный или запрограммированный на proxy использование с выключеным авто update/ в общим много всего связано, сделать все можно, так, что ни кто и никогда не найдет, только как , я ещё не смог такого добиться, так как не нашел уникальной технологии ещё такой, но чувство всегда есть , что можно сделать, всё можно создать, Галактика же создана, значит можно создать и фнтастическую анонимность.


Автор: tutop567 (не зарегистрирован), дата: 17 ноября, 2015 - 01:18
#permalink

mac на firefoxe42 у меня не показало Sad


Автор: иск (не зарегистрирован), дата: 9 января, 2016 - 18:52
#permalink

Спасибо (рахмат-татарский) за статью!


Автор: Гость (не зарегистрирован), дата: 20 февраля, 2016 - 18:00
#permalink

как меня идентифицирует сайт avito.ru и как можно его обойти помогите кто может очень важно


Автор: Гость (не зарегистрирован), дата: 24 февраля, 2016 - 16:43
#permalink

Кому очень важно?


Автор: Руслан Гость (не зарегистрирован), дата: 23 февраля, 2016 - 00:02
#permalink

Хак с сабмитом формы в сафари ещё актуален? Я целый день бьюсь - ничего не получается, и так, и сяк...


Автор: друг Хорна (не зарегистрирован), дата: 24 марта, 2016 - 11:24
#permalink

я играю в браузерную онлайн стратегию... при создании второго аккаунта меня система распознаёт как уже зарегистрированного... повторную регистрацию удается повторить при очистке истории (куки) и смене айпи... но если пробовать регать новый ак по реферальной ссылке реферал получается не рабочий ( то-есть ак вроде есть и играет но польза от него хозяину реферальной ссылки ни какой) Эффективно только регистрация на новом не засвеченном компьютере...но где взять столько машин если надо много рефералов?... МАК-адрес менял не помогает... может криво с руками что... ПОМОГИТЕ обмануть меркантильных хозяев онлайн стратегий и иметь возможность на халявный плюсик.


Автор: Гость (не зарегистрирован), дата: 25 марта, 2016 - 23:28
#permalink

Имею аналогичное желание - Интересно что за игра?


Автор: Гость (не зарегистрирован), дата: 2 июля, 2016 - 17:18
#permalink

Попробуй виртуалку (Virtual Box), совместно со сменой IP она должна увидеть другую машину.


Автор: Гость (не зарегистрирован), дата: 26 апреля, 2016 - 06:34
#permalink

Попробуй песочницу (Sandboxie) для игры, а так если игра не клиентская можно с разных браузеров одновременно.. всегда так делаю. Браузеры - Ирон, Мозила, Полемон, Макстхон и т.д.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
2 + 1 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Реклама
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum