Чисти куки локал сторейдж и кэш

Обновлено: 02.07.2024

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

Почему печенье важны

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

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

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

Будучи в состоянии связывать отдельные, лиц без действия вместе, как это является одним из основных строительных блоков из Интернета.

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

Сторонние печенье

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

Вот как работают рекламодатели и сопровождение компаний, это, как одни и те же объявления могут появляться следовать за вами по Сети, и это, как, например, Twitter знает, какие сайты вы посещали .

печенье «супер»

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

Самая последняя версия HTML, версии 5 , имеет особенность по-разному называемый веб-хранилище, DOM хранения или местного хранения, что позволяет веб-сайтов для создания небольших, но значительных баз данных по машинам пользователей.

Проигрывателя Adobe Flash Player имеет аналогичную функцию, которая позволяет флэш-содержимого, встроенного в веб-страницы для создания и чтения локально общих объектов (РБП). РБП иногда называют флеш-куки или супер печенье.

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

ETags

Когда веб-сервер посылает вам веб-страницы, изображения или любого другого файла, он иногда посылает текстовую строку с именем метка объекта (ETag) с ней. ETag короткий идентификатор, который однозначно идентифицирует конкретную версию конкретного файла.

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

Дактилоскопия

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

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

Я уверен, что это техника, которую мы будем слышать больше о.

Очистка куки, веб хранения и ETags

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

Потому ETags используются для управления, какие файлы кэшируются, они отбрасываются при удалении кэш.

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

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

Firefox

  • Нажмите Firefox, а затем (Mac) или меню Сервис пункт Параметры (Windows)
  • Выберите вкладку Конфиденциальность
  • Нажмите очистить недавнюю историю
  • Отметьте Cookies
  • Отметьте кэш очистить кэш
  • Нажмите Ясно сейчас

Firefox - история

В то время как вы смотрите на вкладке Конфиденциальность диапазон опций для управления печенье доступны в истории. Вы можете настроить их, выбрав Использовать пользовательские настройки для истории под Firefox будет.

Chrome - четкие данные о просмотренных страницах

Сафари

Safari - Параметры конфиденциальности

В то время как вы смотрите на вкладке Конфиденциальность вы увидите несколько вариантов управления печенье тоже.

Очистка кэша является далеко не очевидной процесса.

  • Нажмите Настройки
  • Перейдите на вкладку Дополнительно
  • Tick ​​Показать меню в строке меню Разработка
  • Нажмите Разработка (это будет только появился в строке меню в верхней части)
  • Нажмите Пусто тайники

Safari - развивать

Internet Explorer

IE11 - удаление истории просмотра

Опции для управления печенье можно найти в истории посещенных страниц и на вкладке Privacy.

Очистка флеш-куки

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

Windows

Частный просмотр и дополнения

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

Частный просмотр работает для Flash-РБП тоже. Согласно Adobe, Flash Player версии 10.1 и более поздних очистит флеш-куки в конце сеанса просмотра, если вы используете личное просмотра в следующих браузерах:

  • Google Chrome
  • Mozilla Firefox
  • Microsoft Internet Explorer
  • Apple Safari

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

Проходя все из них хорошо выходит за рамки данной статьи, но Ghostery является хорошим местом для начала. Я оставлю это для читателей вступать в свои фавориты в комментариях.

Изображение Cookie Monster лицензированного под Creative Commons, любезно Flickr NonprofitOrgs пользователей.

Follow @NakedSecurity on Twitter for the latest computer security news.

Follow @NakedSecurity on Instagram for exclusive pics, gifs, vids and LOLs!

Объекты веб-хранилища localStorage и sessionStorage позволяют хранить пары ключ/значение в браузере.

Что в них важно – данные, которые в них записаны, сохраняются после обновления страницы (в случае sessionStorage ) и даже после перезапуска браузера (при использовании localStorage ). Скоро мы это увидим.

Но ведь у нас уже есть куки. Зачем тогда эти объекты?

Объекты хранилища localStorage и sessionStorage предоставляют одинаковые методы и свойства:

  • setItem(key, value) – сохранить пару ключ/значение.
  • getItem(key) – получить данные по ключу key .
  • removeItem(key) – удалить данные с ключом key .
  • clear() – удалить всё.
  • key(index) – получить ключ на заданной позиции.
  • length – количество элементов в хранилище.

Как видим, интерфейс похож на Map ( setItem/getItem/removeItem ), но также запоминается порядок элементов, и можно получить доступ к элементу по индексу – key(index) .

Давайте посмотрим, как это работает.

Демо localStorage

Основные особенности localStorage :

  • Этот объект один на все вкладки и окна в рамках источника (один и тот же домен/протокол/порт).
  • Данные не имеют срока давности, по которому истекают и удаляются. Сохраняются после перезапуска браузера и даже ОС.

Например, если запустить этот код…

…И закрыть/открыть браузер или открыть ту же страницу в другом окне, то можно получить данные следующим образом:

Нам достаточно находиться на том же источнике (домен/протокол/порт), при этом URL-путь может быть разным.

Объект localStorage доступен всем окнам из одного источника, поэтому, если мы устанавливаем данные в одном окне, изменения становятся видимыми в другом.

Доступ как к обычному объекту

Также можно получать/записывать данные, как в обычный объект:

Это возможно по историческим причинам и, как правило, работает, но обычно не рекомендуется, потому что:

Если ключ генерируется пользователем, то он может быть каким угодно, включая length или toString или другой встроенный метод localStorage . В этом случае getItem/setItem сработают нормально, а вот чтение/запись как свойства объекта не пройдут:

Когда мы модифицируем данные, то срабатывает событие storage . Но это событие не происходит при записи без setItem , как свойства объекта. Мы увидим это позже в этой главе.

Перебор ключей

Методы, которые мы видим, позволяют читать/писать/удалять данные. А как получить все значения или ключи?

К сожалению, объекты веб-хранилища нельзя перебрать в цикле, они не итерируемы.

Но можно пройти по ним, как по обычным массивам:

Другой способ – использовать цикл, как по обычному объекту for key in localStorage .

Здесь перебираются ключи, но вместе с этим выводятся несколько встроенных полей, которые нам не нужны:

…Поэтому нам нужно либо отфильтровать поля из прототипа проверкой hasOwnProperty :

…Либо просто получить «собственные» ключи с помощью Object.keys, а затем при необходимости вывести их при помощи цикла:

Последнее работает, потому что Object.keys возвращает только ключи, принадлежащие объекту, игнорируя прототип.

Только строки

Обратите внимание, что ключ и значение должны быть строками.

Если мы используем любой другой тип, например число или объект, то он автоматически преобразуется в строку:

Мы можем использовать JSON для хранения объектов:

Также возможно привести к строке весь объект хранилища, например для отладки:

sessionStorage

Объект sessionStorage используется гораздо реже, чем localStorage .

Свойства и методы такие же, но есть существенные ограничения:

  • sessionStorage существует только в рамках текущей вкладки браузера.
    • Другая вкладка с той же страницей будет иметь другое хранилище.
    • Но оно разделяется между ифреймами на той же вкладке (при условии, что они из одного и того же источника).

    Давайте посмотрим на это в действии.

    Запустите этот код…

    …И обновите страницу. Вы всё ещё можете получить данные:

    …Но если вы откроете ту же страницу в другой вкладке и попробуете получить данные снова, то код выше вернёт null , что значит «ничего не найдено».

    Так получилось, потому что sessionStorage привязан не только к источнику, но и к вкладке браузера. Поэтому sessionStorage используется нечасто.

    Событие storage

    Когда обновляются данные в localStorage или sessionStorage , генерируется событие storage со следующими свойствами:

    • key – ключ, который обновился ( null , если вызван .clear() ).
    • oldValue – старое значение ( null , если ключ добавлен впервые).
    • newValue – новое значение ( null , если ключ был удалён).
    • url – url документа, где произошло обновление.
    • storageArea – объект localStorage или sessionStorage , где произошло обновление.

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

    Представьте, что у вас есть два окна с одним и тем же сайтом. Хранилище localStorage разделяется между ними.

    Вы можете открыть эту страницу в двух окнах браузера, чтобы проверить приведённый ниже код.

    Теперь, если оба окна слушают window.onstorage , то каждое из них будет реагировать на обновления, произошедшие в другом окне.

    Обратите внимание, что событие также содержит: event.url – url-адрес документа, в котором данные обновились.

    Также event.storageArea содержит объект хранилища – событие одно и то же для sessionStorage и localStorage , поэтому event.storageArea ссылается на то хранилище, которое было изменено. Мы можем захотеть что-то записать в ответ на изменения.

    Современные браузеры также поддерживают Broadcast channel API специальный API для связи между окнами одного источника, он более полнофункциональный, но менее поддерживаемый. Существуют библиотеки (полифилы), которые эмулируют это API на основе localStorage и делают его доступным везде.

    Итого

    Объекты веб-хранилища localStorage и sessionStorage позволяют хранить пары ключ/значение в браузере.

    • key и value должны быть строками.
    • Лимит 2 Мб+, зависит от браузера.
    • Данные не имеют «времени истечения».
    • Данные привязаны к источнику (домен/протокол/порт).
    • setItem(key, value) – сохранить пару ключ/значение.
    • getItem(key) – получить данные по ключу key .
    • removeItem(key) – удалить значение по ключу key .
    • clear() – удалить всё.
    • key(index) – получить ключ на заданной позиции.
    • length – количество элементов в хранилище.
    • Используйте Object.keys для получения всех ключей.
    • Можно обращаться к ключам как к обычным свойствам объекта, в этом случае событие storage не срабатывает.
    • Срабатывает при вызове setItem , removeItem , clear .
    • Содержит все данные об произошедшем обновлении ( key/oldValue/newValue ), url документа и объект хранилища storageArea .
    • Срабатывает на всех объектах window , которые имеют доступ к хранилищу, кроме того, где оно было сгенерировано (внутри вкладки для sessionStorage , глобально для localStorage ).

    Задачи

    Автосохранение поля формы

    Создайте поле textarea , значение которого будет автоматически сохраняться при каждом его изменении.

    Когда пользователь закроет страницу и потом откроет её заново он должен увидеть последнее введённое значение.

    Первый контакт с Cookie2 (сеанс, LocalStorage, кеш и т. Д.)

    Session

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

    Сессия - это хеш-таблица, принадлежащая серверу.

    При использовании сначала определите sessions Хэш-таблицу и сгенерируйте случайное число в качестве текущего пользователя sessionId , Случайные числа используются в целях безопасности, чтобы пользователи не могли получить правильные sessionId . Затем поместите информацию, которая должна была быть в файле cookie, в sessions[sessionId] Внутри хранится на сервере, и sessionId от Cookie Передайте его в браузер.

    Код реализован следующим образом:

    Благодаря этой операции браузер не получает напрямую информацию о пользователе, но выдает sessionId , Сервер прошел sessions Соответствует тому, который поставляется с браузером sessionId , Получите информацию о пользователе. Запретить пользователям получать информацию других пользователей путем подделки файлов cookie, и sessionId Он генерируется случайным образом, нет правил, которым нужно следовать, и невозможно подделать другие пользователи sessionId 。

    Таким образом также может быть получена информация о текущем пользователе, и пользователь не может подделать другого пользователя.

    Связь с куки

    • Сессия использовать sessionId На основе файлов cookie
    • Сессия хранится на сервере, и ее идентификатор сеанса отправляется в браузер через файл cookie.
    • SessionId отправляется на сервер вместе с файлом cookie каждый раз, когда происходит запрос.

    резюме

    Сессия занимает слишком много памяти, каждый пользователь должен хранить ( sessionId -Информация о пользователе) и не может быть переработана.При большом количестве пользователей требования к производительности оборудования особенно высоки.

    LocalStorage

    LocalStorage - это хэш-таблица, хранящаяся в браузере, и может хранить только строки (поскольку не-строки автоматически преобразуются в строки, .toString() )。

    В браузере есть один window.localstorage API выглядит следующим образом:

    Поскольку значение LocalStorage не изменяется при закрытии, обновлении страницы и т. Д., Его можно использовать для хранения некоторых значений, которые не нужно изменять при обновлении страницы, для постоянного хранения.

    Типичные сценарии: записать, есть ли какая-либо информация о пользователе (не может использоваться для записи паролей)

    Характеристики

    .setItem()

    Это используется для хранения данных LocalStorage, использование следующее

    Нестроковый key с участием value Он будет преобразован в строковую форму и может быть сохранен в JSON.

    getItem()

    Используется для чтения данных в LocalStorage, используется следующее:

    .removeItem

    Используется для удаления значения, хранящегося в LocalStorage, используется следующим образом:

    .clear()

    Очистите значение LocalStorage.

    Связь с куки

    SessionStorage

    SessionStorage похож на LocalStorage, а также имеет такие функции, как LocalStorage api. Однако SessionStorage становится недействительным, когда пользователь закрывает страницу (завершает сеанс)

    Cache-Control

    Если мы установим Cache-Control на ответ JS-файла страницы, то, если JS-файл будет запрашиваться повторно в течение 30 секунд, браузер заблокирует запрос и вместо этого прочитает JS-файл из памяти или жесткого диска.

    Это первая ситуация загрузки.

    И будет Cache-Control: max-age=30 Информация представлена ​​на рисунке ниже.

    Когда браузер снова запросит этот файл JavaScript в течение 30 секунд, он будет следующим.

    Как видно из рисунка, когда установлен Cache-Control и один и тот же файл запрашивается повторно в течение эффективного времени, время обработки составляет 0 мс, что означает, что браузер вообще не отправляет запрос на сервер, а читает из памяти. Запрошенный файл.

    Время кеширования файлов JS и CSS обычно имеет большое значение, например один год.

    Итак, что мне делать, если мне нужно обновить файлы JS и CSS?

    Здесь вам нужно только изменить URL-адрес запроса JS и CSS, например добавить параметр запроса. Эффект такой:

    Expires

    Expires также используется для управления кешем.В отличие от Cache-Control, заголовок ответа Expires содержит дату / время, то есть по истечении этого времени срок действия ответа истекает. Недопустимая дата, например 0, представляет собой дату в прошлом, т. Е. Истек срок действия ресурса. Использование следующее:

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

    Тот же URL-адрес запроса на изменение может обновить файл в течение срока действия.

    Следует отметить, что Expires возвращает время сервера, а браузер использует местное время в качестве эталона при оценке времени.Если местное время слишком сильно отличается от времени сервера, запрос может содержать ошибку. Например, после настройки местного времени на срок действия каждый запрос отправляется на сервер и не будет заблокирован браузером.

    И когда одновременно установлены Expires и Cache-Control, Expires будет проигнорирован, и будет работать только Cache-Control.

    Выше приведено введение MDN в ETag. С точки зрения непрофессионала, ETag записывает номер версии запрошенного файла. Каждый раз, когда браузер запрашивает этот файл, он возвращает этот номер версии (как поле If-None-Match). Value), если сервер обнаруживает, что номер версии файла не изменился, то есть файл не изменился, ему не нужно повторно отправлять файл в браузер и позволить браузеру прочитать ранее загруженный файл в кеше.

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

    Использование ETag выглядит следующим образом:

    Результат показан ниже:

    Видно, что хотя кэш используется, время обработки не равно 0 мс по сравнению с двумя предыдущими методами. Это потому, что он отправил запрос на сервер, но сервер не отправил файл в браузер после сравнения значения ETag.

    Last-Modified

    Last-Modified - это заголовок ответа, который содержит дату и время изменения ресурса, указанного исходным сервером.

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

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

    Подобно ETag, он также отправляет запросы, но сервер не возвращает файлы.

    Как очистить cookie (куки) и кэш (cache) браузера

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

    • — элементов дизайна страницы;
    • — графики и картинок, просмотренных нами;
    • — прослушанной мелодии и так далее.

    Для чего? Ответ: Ускорения процесса загрузки этой же страницы при повторном обращении к ней. Темп повышается потому, что информация теперь частично загружается с файлов, хранящихся на вашем ПК, а не с сервера только, удаленного от вас. Это здорово! Однако, не обходится без некоторых проблем. Каких?

    Во-первых, количество таких файлов со временем увеличивается. При регулярном использовании интернета их объем быстро превышает несколько гигабайт.

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

    Приведенные аргументы не оставляют сомнений в важности периодической чистки кэш.

    Куки – тоже относятся к временным файлам. Там хранится информация персонального характера: пароль, логин, идентификатор, адрес e-mail и тому подобное. Открыв сайт, мы тут же попадаем на свою страничку, в свой аккаунт благодаря этим сохранившимся данным.

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

    Технология очищения (cookie) браузера

    Надеемся, что вы получили необходимую информацию не просто о том, как надо чистить кэш (cache) и куки (cookie) браузера. Теперь вы знаете, каково их предназначение, и кроме того, что хранится там.

    Читайте также: