html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Evercookie - неубиваемые кукисы


Cookies — распространенная технология, позволяющая веб-сайту «запомнить» своего пользователя, сохранить его настройки локально на стороне клиента и не спрашивать каждый раз его логин и пароль. Можно подумать, что если удалить кукисы в своем браузере, то сайт тебя не узнает. Но эта уверенность слишком обманчива.

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

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

evercookie

Как работают куки?

Как обычно, сначала немного вводной теории.

Чтобы идентифицировать пользователя, испокон веков использовались кукисы. Cookies (от англ. «печенье») — это небольшая порция текстовой информации, которую сервер передает браузеру. Когда пользователь обращается к серверу (набирает его адрес в строке браузера), сервер может считывать информацию, содержащуюся в cookies, и на основании ее анализа совершать какие-либо действия.

Например, в случае авторизованного доступа к чему-либо через веб в cookies сохраняются логин и пароль в течение сессии, что позволяет пользователю не вводить их снова при запросах каждого документа, защищенного паролем. Таким образом, веб-сайт может «запомнить» пользователя. Технически это выглядит следующим образом. Запрашивая страницу, браузер отправляет веб-серверу короткий текст с HTTP-запросом.

Ещё пример: для доступа к странице www.example.org/index.html браузер отправляет на сервер www.example.org следующий запрос:GET /index.html HTTP/1.1
Host: www.example.org

Сервер отвечает, отправляя запрашиваемую страницу вместе с текстом, содержащим HTTP-ответ. Там может содержаться указание браузеру сохранить куки:HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value

Если есть строка Set-cookie, браузер запоминает строку-сопоставление name=value (имя = значение) и отправляет ее обратно серверу с каждым последующим запросом:GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: name=value
Accept: */*

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

Этот факт сильно расстраивает владельцев многих ресурсов, которые не желают терять свою интимную и такую трогательную связь с посетителем. Людям бизнеса важно отслеживать его, понимать, что «вот этот человек был у нас вчера, а еще позавчера и т.д.». Особенно это касается различных анализаторов трафика, систем для ведения статистики, баннерных сетей и т.п.

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

Flash-куки

Все дело в том, что помимо обычных HTTP «плюшек», к которым все давно привыкли, сейчас активно используются альтернативные хранилища, где браузер может записать данные на стороне клиента. Первое, что нужно упомянуть — это хранилище любимого и ненавистного одновременно Flash (для тех пользователей, у которых он установлен). Данные хранятся в так называемых LSO (Local Shared Objects) — схожих с cookies по формату файлах, которые сохраняются локально на компьютере пользователя. Подход во многом аналогичен обычным «плюшкам» (в этом случае на компьютере пользователя точно так же сохраняется небольшое количество текстовых данных), но имеет некоторые преимущества:

  • Flash-cookies являются общими для всех браузеров на компьютере (в отличие от классической cookie, которая привязана к браузеру). Настройки, информация о сессии, как и, скажем, некий идентификатор для отслеживания пользователя, не привязываются к какому-то конкретному браузеру, а становятся общими для всех.
  • Flash-cookies позволяют сохранять намного больший объем данных (как правило, 100 Кб), что увеличивает количество настроек пользователя, доступных для сохранения.

На практике LSO становится очень простой и доступной технологией для трекинга пользователя. Задумайся: если бы я предлагал тебе удалить все «плюшки» в системе, ты бы вспомнил о Flash-кукисах? Вероятно, нет. А теперь попробуй взять любой просмотрщик, например, бесплатный FlashCookiesView и посмотреть, сколько всего интересного записано в хранилищах Flash.

evercookie

Тут же вырисовывается и список сайтов, которые очень не хотят потерять твой след, даже если ты подчистишь кэш браузера (вместе с «плюшками»).

Кукисы повсюду: evercookie

Но если об LSO слышали продвинутые пользователи и мало-мальски хорошие разработчики, то о существовании других техник хранения и крапления данных, подчас очень изощренных (но действенных), многие даже не подозревают. Взять хотя бы новые хранилища, которые появлялись в HTML5 (Session Storage, Local Storage, Global Storage, Database Storage via SQLite).

Этой проблемой всерьез заморочился польский специалист по безопасности Samy Kamkar. В результате на свет появилась специальная JavaScript-библиотека evercookie, которая специально создана для того, чтобы создавать максимально живучие кукисы в браузере. Кто-то может спросить: «Зачем это нужно?». Очень просто: для того, чтобы однозначно идентифицировать любого, даже самого хитровыученного посетителя страницы, если он придет вновь. Такие сложно убиваемые кукисы часто называются Tracking cookies и даже определяются некоторыми антивирусами как угроза приватности. Иначе говоря, использование сайтом библиотек типа evercookie может свести на нет все ваши попытки остаться анонимным к нулю.

Секрет в том, что evercookie использует сразу все доступные для браузера хранилища: обычные HTTP-кукисы, LSO, а также контейнеры HTML5. Кроме того, в ход идет несколько хитрых приемов, которые с не меньшим успехом позволяют оставить на компьютере желанную метку. Среди них: генерация особых метящих PNG-изображений, использование history вашего браузера, хранение данных с помощью тега ETag, контейнер userData в Internet Explorer — оказывается, что вариантов-то очень много.

В том, насколько это эффективно работает, можно убедиться на сайте разработчика — samy.pl/evercookie. Если нажать там на кнопку «Click to create an evercookie», в вашем браузере будут созданы кукисы со случайным числом. После чего попробуй удалить эти кукисы везде, где это только возможно.

evercookie

Бьюсь об заклад, сейчас ты задумался: «Где еще можно удалить кукисы, кроме как в настройках браузера?». Уверен, что все удалил? Перезагрузи страницу для верности, можешь даже заново открыть браузер. Вот теперь смело нажимай на кнопку «Click to rediscover cookies». WTF? Сайту это не помешало откуда-то взять данные — в полях страницы отобразилось число, которые было сохранено в кукисах.

evercookie

Но мы же всё потерли? Как это получилось? Попробуем неспешно разобраться с некоторыми техниками cookie-библиотек типа evercookie.

Кукисы в PNG

Крайне интересным приемом, используемым в Evercookie, является подход хранения данных в кэшированных PNG-изображениях. Когда evercookie устанавливает куки, он обращается к скрипту evercookie_png.php со специальной HTTP «плюшкой», отличной от той, которая используется для хранения стандартной информации о сессии. Эти специальные кукисы считываются PHP-сценарием, создающим PNG-изображение, в котором все значения RGB (цветов) выставляются в соответствии с информацией о сессии. В конечном итоге PNG-файл отправляется браузеру клиента с пометкой: «файл необходимо кэшировать 20 лет».

Получив эти данные, evercookie удаляет созданные ранее специальные HTTP-кукисы, затем выполняет тот же самый запрос к тому же PHP-сценарию, но, не предоставляя информации о пользователе. Тот видит, что интересующих его данных нет, и сгенерировать PNG он не может. Вместо этого браузеру возвращается поддельный HTTP-ответ «304 Not Modified», что заставляет его вытащить файл из локального кэша. Изображение из кэша вставляется на страницу с помощью тега HTML5 Canvas. Как только это происходит, evercookie считывает каждый пиксель содержимого Canvas, извлекая RGB-значения и, таким образом, восстанавливая данные изначальных кукисов, которые были сохранены в изображении. Вуаля, все работает!

Хинт с Web History

Другой прием напрямую использует историю браузера. Как только браузер устанавливает плюшку, evercookie с помощью алгоритма Base64 кодирует данные, которые необходимо сохранить. Предположим, что этими данными является строка, полученная «bcde» после преобразований в Base64. Библиотека последовательно обращается в фоновом режиме к следующим URL:google.com/evercookie/cache/b
google.com/evercookie/cache/bc
google.com/evercookie/cache/bcd
google.com/evercookie/cache/bcde
google.com/evercookie/cache/bcde-

Таким образом, эти URL сохраняются в history. Далее в ход идет специальный прием — CSS History Knocker, который с помощью JS-скрипта и CSS позволяет проверить, посещал ли пользователь указанный ресурс или нет (подробнее смотри тут).

Для проверки плюшек evercookie пробегается по всем возможным символам Base64 на google.com/evercookie/cache, начиная с символа «a» и двигаясь далее, но только на один символ. Как только скрипт видит URL-адрес, к которому было обращение, он начинает перебор следующего символа. Получается своеобразный брутфорс. На деле этот подбор осуществляется чрезвычайно быстро, потому что никакие запросы к серверу не выполняются. Поиск в history осуществляется локально в максимально короткий срок. Библиотека знает, что достигла конца строки, когда URL будет заканчиваться символом «-». Декодируем Base64 и получаем наши данные.

Как назвать разработчиков браузеров, которые всё это позволяют?

Попробуй удали

А что будет, если юзер потрет свои кукисы? Важная фишка самой библиотеки evercookie в том, что пользователю придется основательно постараться, чтобы удалить кукисы, оставленные в разных местах — сейчас их 10. Если хотя бы в одном месте останутся данные куки, то они автоматически восстановятся и во всех других местах.

Например, если пользователь не только удалит свои стандартные кукисы, но и очистит данные LSO, подчистит HTML5-хранилища, что уже маловероятно, все равно останутся куки, созданные с помощью кэшированного PNG и web history. При следующем же посещении сайта с evercookie библиотека не только сможет найти запрятанную плюшку, но и восстановит их во всех остальных местах, которые поддерживает браузер клиента.

Интересный момент связан с передачей «плюшек» между разными локально установленными браузерами. Если пользователь получает кукисы в одном браузере, то есть большая вероятность, что они воспроизведутся и в других. Единственное необходимое для этого условие — возможность сохранение данных в Local Shared Object куке.

Кроме описанных методов, также активно используются технология Isolated Storage в Silverlight, а также сохранение данных через Java-апплета.

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

Библиотека Evercookie полностью открытая, поэтому ты можешь скачать и изучить её, подгонять под свои нужды. К серверу не предъявляется никаких серьезных требований. Все что нужно — это доступ к JS-сценарию, в котором содержится код evercookie. Чтобы использовать Flash-кукисы (Local Shared Object), в папке со скриптом должен быть файл evercookie.swf, а для работы техник, основанных на PNG-кэшировании и использовании хранилища ETag, необходим доступ к PHP-сценариям evercookie_png.php и evercookie_etag.php.

Использовать evercookie можно на любой страничке сайта, подключив следующий js-скрипт:

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="swfobject-2.2.min.js"></script>
<script type="text/javascript" src="evercookie.js"></script>
<script>
var ec = new evercookie();
// устанавливаем cookie "id" со значением "12345"
// синтаксис: ec.set(key, value)
ec.set("id", "12345");
// восстанавливаем кукису с именем "id"
ec.get("id", function(value) 
{
    alert("Cookie value is " + value)
});

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

function getCookie(best_candidate, all_candidates)
{
    alert("The retrieved cookie is: " + best_candidate + "\n" + 
    "You can see what each storage mechanism returned " + 
    "by looping through the all candidates object.");
    
    for (var item in all_candidates) 
    document.write("Storage mechanism " + item + " returned: " + 
    all_candidates[item] + "
");
}
ec.get("id", getCookie);
</script>

Конечно, эта библиотека уже нашла свою популярность, например в сфере организации голосований, в интернет-магазинах и в некоторых других областях. Впрочем, специально для web-разработчиков у меня есть два важных замечания: во-первых, эти куки — кросс-доменные, и хранить в них конфиденциальную инфу никак нельзя. Вот что написано в самом начале файла-библиотеки evercookie.js: *!!! SOME OF THESE ARE CROSS-DOMAIN COOKIES, THIS MEANS * OTHER SITES WILL BE ABLE TO READ SOME OF THESE COOKIES!!!

И, во-вторых, многие антивирусы (например, Касперский), ругаются на сайты, использующие эту js-библиотечку, идентифицируя её как spyware.

В любом случае библиотека evercookie доступна каждому. Это немного пугает, особенно если совершенно не представляешь, что можно против нее предпринять.

Как защититься?

Проблем с тем, чтобы подчистить куки в браузере и Flash’е, нет. Но попробуй удали данные везде, где наследила evercookie!

Ведь если оставишь куки хоть в одном месте — скрипт автоматически восстановит значение и во всех остальных хранилищах. По сути, эта библиотека является хорошей проверкой режима приватности, который сейчас есть практически у всех браузеров. И вот что я тебе скажу: из проверенных мною Google Chrome, Opera, Internet Explorer и Safari — только последний в режиме «Private Browsing» полностью блокировал все методы, используемые evercookie. То есть после закрытия и открытия браузера скрипт не смог восстановить оставленное им значение. Если же остановиться на популярном Firefox, то только при включенном плагине Noscript evercookie не работает, требуя от пользователя сначала включить javascript , а потом ещё и флэш-объект. Другие же похожие плагины BetterPrivacy и CookieSafe — вообще никак не помогли в защите анонимности.

Есть повод задуматься. Тем более что в ближайшее время разработчик evercookie обещал добавить в библиотеку еще несколько новых техник хранения данных, такие как:

  • Использование кеширования в HTTP Authentication;
  • Использование Java для генерирования уникального числа привязанного к конкретному компьютеру.

Заключение

Конечно, evercookie — не единственная подобная библиотека. Как пример можно привести Panoptiсlick, которая даже в чём-то превосходит её. Более подробно почитать о ней и методах борьбы с подобными механизмами можно вот тута.

Update: в кукисовых войнах всё по-настоящему — это увлекательное состязание брони и снаряда. Вот и в ответ на популярность этой js-библиотеки стали появляться утилиты, нацеленные на борьбу именно с ней. Mil Shield — утилита, которая не только потрёт действительно все инсталляции evercookie на вашем компьютере, но и как загадочно обещают разработчики, — «... и сделает даже больше того».

Степан Ильин, 2010
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с blogerator.ru

  • DUDE
    Для последних версий firefox или chrome оно не актуально - приватный просмотр не пробиваем для их кук.
451
    +433 surfers

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • pleshner
          • домен blogerator.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции