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

Тема в разделе "АНОНИМНОСТЬ В ИНТЕРНЕТЕ", создана пользователем LPB, 4 фев 2011.

  1. LPB

    LPB Member

    Сообщения:
    104
    Симпатии:
    0
    Как идентифицировать посетителя?

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

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

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

    Примеры

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

    Panopticlick

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

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

    Evercookie

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

    И не только...

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

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

    Как можно использовать?

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

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

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

    Компоненты цифровой подписи

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

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

    Работа с Cookie

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

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

    3rd party cookie

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

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

    Пример

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


    Код:

    01 <?php setcookie(sid, rand(),0,/); ?><!DOCTYPE HTML>02 <html>03 <head>04 <script>0506 document.cookie = sid= + Math.random() + ;path=/07 alert(document.cookie)0809 </script>
    10 </head>11 <body></body>12 </html>[/CODE]

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

    Код:

    1 <!DOCTYPE HTML>2 <html>3 <body>45 <iframe src=****://ilyakantor.ru/js/3rd/frame.php height=100></iframe>67 </body>8 </html>
    При настройках браузера по умолчанию, вы должны увидеть пустой алерт. Это означает, что кука не поставилась.

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

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

    P3P

    IE не ставит 3rd party cookies без специальной политики P3P (****://ru.wikipedia.org/wiki/P3P), которую можно передать в серверных заголовках. Эта политика показывает, в каких целях вы метите пользователя, что вы собираетесь делать с информацией о нем в дальнейшем.

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

    Код:

    header(P3P: CP=NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM);
    Обход блокирования 3rd party cookies

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

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

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

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

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


    Код:

    01 <?php02 setcookie(sid, time(),0,/);03 header(P3P: CP=NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM);0405 ?><!DOCTYPE HTML>06 <html>07 <head>08 <script>0910 alert(document.cookie)1112 </script>
    13 </head>14 <body></body>15 </html>[/CODE]

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

    Код:

    01 <!DOCTYPE HTML>02 <body>03 <script>0405 onload = function() {06 var div = document.createElement(div)07 document.body.appendChild(div)0809 div.innerHTML = <iframe src= name=iframe></iframe> 10 <form method=POST target=iframe action=****://ilyakantor.ru/js/3rd/frame_hack.php></form>1112 div.getElementsByTagName(form)[0].submit()13 }1415 </script>
    16 </body>[/CODE]
    Попробовали? Должно быть все в порядке.

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

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


    Javascript

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

    Browser Persistency

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

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

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


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

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

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

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


    Код:

    <iframe width=400 height=130 src=****://javascript.ru/files/id/persistence.html></iframe>
    navigator

    С помощью Javascript доступен замечательный объект nagivator (*****://developer.mozilla.org/en/DOM/window.navigator), содержащий полную информацию о браузере посетителя и название его OS .


    Код:

    1 <pre>2 <script>34 for(var prop in navigator) {5 if (navigator[prop] instanceof Object || navigator[prop]===) continue6 document.writeln(prop+: +navigator[prop])7 }89 </script>
    Многие из этих свойств не изменяются даже при обновлении мажорной версии браузера, не говоря уже минорной.

    screen

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


    Код:

    1 <pre>2 <script>34 for(var prop in screen) {5 if (navigator[prop] instanceof Object || screen[prop]===) continue6 document.writeln(prop+: +screen[prop])7 }89 </script>
    Плюс этой информации - в том, что этот компонент подписи очень стабилен и не меняется почти никогда.

    navigator.plugins

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


    Код:

    01 <pre>02 <script>03 var prev04 for(var i=0;i<navigator.plugins.length;i++) {05 var plugin = navigator.plugins06 var plugin = plugin.name+ +(plugin.version || )07 if (prev == plugin ) continue08 document.writeln(plugin )09 prev = plugin10 }1112 </script>
    Вася обновил браузер? Нич

Поделиться этой страницей