Web11: файлы cookie HTTP и некоторые проблемы безопасности

Web11: файлы cookie HTTP и некоторые проблемы безопасности

1. Введение

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

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

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

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

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

2. Обзор файлов cookie HTTP

2.1. История

Термин «cookie» происходит от термина «волшебный файл cookie», который представляет собой неизменяемую часть данных, отправляемую и получаемую компьютерной программой. Программисту по имени Лу Монтули пришла в голову идея использовать волшебные файлы cookie в веб-коммуникациях в 1994 году. В то время он работал в Netscape Communications над проектом по разработке приложений электронной коммерции для MCI. Файлы cookie используются в качестве решения для создания виртуальных корзин покупок, помогая серверам MCI не сохранять статус транзакций, а вместо этого они сохраняются на компьютере пользователя.

Вместе с Джоном Джаннандреа Монтули написал первую спецификацию файлов cookie Netscape. Версия 0.0beta Mosaic Netscape, выпущенная 13 октября 1994 г., поддерживала файлы cookie. При первом использовании файлов cookie (за пределами лаборатории) проверялось, посещал ли клиент веб-сайт Netscape раньше или нет. Монтули получил патент на файлы cookie в 1995 году. А версия 2 Internet Explorer (выпущенная в октябре 1995 года) включала использование файлов cookie.

В то время использование файлов cookie не получило широкого распространения. В частности, файлы cookie принимаются по умолчанию, пользователи не уведомляются об их наличии. Общественность узнала о файлах cookie только после того, как 12 февраля 1996 года была опубликована статья о них в Financial Times. С тех пор файлы cookie получили большое внимание, особенно содержащаяся в них личная информация. Файлы cookie обсуждались на двух слушаниях Федеральной торговой комиссии США в 1996 и 1997 годах.

Первое обсуждение официальной спецификации файлов cookie началось в апреле 1995 года. Для выполнения этой работы в рамках Инженерной группы Интернета (IETF) была сформирована специальная группа. Наконец, спецификация была опубликована группой в феврале 1997 года. В спецификации сторонние файлы cookie определялись как неприемлемые для всех или, по крайней мере, не включенные по умолчанию.
В апреле 2011 года стандартная спецификация файлов cookie для практического использования была опубликована в документе RFC 6265 .

2.2. Терминология

Сеансовые файлы cookie

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

Постоянные файлы cookie

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

Безопасные файлы cookie

Безопасный файл cookie — это атрибут безопасности, активируемый при использовании HTTPS, гарантирующий, что файл cookie всегда зашифрован при передаче от клиента к серверу, что помогает избежать перехвата и раскрытия информации. Кроме того, все файлы cookie должны соответствовать политике браузера в отношении одного и того же происхождения.

HTTPТолько файлы cookie

Атрибут файлов cookie HttpOnly поддерживается большинством браузеров. Файл cookie сеанса HttpOnly будет использоваться только в одном запросе HTTP (или HTTPS), тем самым ограничивая доступ к API-интерфейсам, отличным от HTTP, таким как Javascript. Это ограничение смягчает, но не устраняет кражу файлов cookie через уязвимости межсайтового скриптинга (XSS).

Сторонние файлы cookie

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

Например, предположим, что пользователь посещает веб-сайт example1.com . Этот веб-сайт содержит рекламу от ad.foxytracking.com. При загрузке файлы cookie ad.foxytracking.com сохраняются. Затем он посещает другой веб-сайт (example2.com), который также содержит рекламу от ad.foxytracking.com и также устанавливает файл cookie, принадлежащий ad.foxytracking.com. Наконец, оба этих файла cookie будут отправлены рекламодателю при загрузке рекламы или доступе к его веб-сайту. Рекламодатели могут использовать эти файлы cookie для создания истории посещений пользователем всех веб-сайтов, содержащих их рекламу.

В 2014 году было несколько веб-сайтов, устанавливавших файлы cookie, которые могли быть прочитаны более чем 100 сторонними доменами. В среднем на веб-сайте установлено около 10 файлов cookie, при этом максимальное количество файлов cookie может превышать 800.

Суперпеченье

Суперкуки — это файлы cookie, происходящие из домена верхнего уровня, например .com, или общедоступного суффикса, например .co.uk. Важно, что суперкуки блокируются браузерами из-за некоторых проблем безопасности. Если этот файл разблокирован, злоумышленник, управляющий вредоносным веб-сайтом, может настроить суперкуки для выдачи себя за запросы пользователей, отправляя запросы на другие веб-сайты, использующие тот же домен верхнего уровня или общедоступный суффикс. Например, суперкуки, исходящие из домена .com, могут нанести вред запросам на example.com, даже если они исходят не от example.com. Его можно использовать для подделки входа в систему или изменения информации о пользователе.

Зомби-печенье

Файлы cookie-зомби — это файлы cookie, которые автоматически воссоздаются после их удаления пользователем. Это делается с помощью сценария, который сохраняет содержимое файла cookie в другом месте, например в хранилище Flash-контента, хранилище HTML5 или в каком-либо другом механизме на стороне клиента.

2.3. Структура файлов cookie

Файл cookie размером 4 КБ включает в себя 7 основных компонентов:

  1. Имя
  2. Ценить
  3. Истекает (срок годности)
  4. Путь (путь к файлу cookie, «/» означает, что файл cookie действителен на любом пути)
  5. Домен
  6. Безопасный
  7. HttpOnly

Первые два компонента (имя и значение) являются обязательными.

2.4. Использовать

Управление сеансами

Файлы cookie могут использоваться для хранения данных пользователя при нескольких посещениях веб-сайта. Файлы cookie — это решение для создания корзины покупок, виртуальной корзины покупок, которая помогает пользователям сохранять товары, которые они выбирают при просмотре товаров.

Текущие приложения корзин покупок часто хранят список товаров в корзине в базе данных на стороне сервера, а не в файле cookie на стороне клиента. Веб-сервер обычно отправляет файл cookie, содержащий идентификатор сеанса — идентификатор сеанса (который уникален). Веб-браузер будет возвращать этот идентификатор сеанса с каждым запросом пользователя на покупку.

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

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

Персонализированный

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

Ярким примером является функция рекомендации книг на сайте amazon.com. Когда пользователь нажимает на книгу, Amazon предложит ему следующие книги, которые ему следует прочитать. Эти предложения основаны на том, какие книги пользователи ранее просматривали и какие книги они решили приобрести.

Другой пример — функция поисковых предложений Google Search. Когда вы входите в свою личную учетную запись и выполняете поиск, Google предлагает предложения «только для вас», а нужные вам результаты всегда появляются вверху списка.

Монитор

Отслеживающие файлы cookie могут использоваться для отслеживания истории посещений пользователя. Это также можно сделать, используя IP-адрес компьютера, отправляющего запрос на веб-сайт, или используя поле Referrer заголовка HTTP-запроса, но файлы cookie обеспечивают более высокую точность. Это делается следующим образом:

  1. Если пользователь посещает веб-сайт, но этот запрос не содержит файлов cookie, сервер предположит, что пользователь посещает этот веб-сайт впервые; Сервер сгенерирует случайную строку и отправит ее в виде файла cookie обратно в браузер вместе с запрошенной веб-страницей.
  2. С этого момента файл cookie будет автоматически отправляться браузером на сервер каждый раз, когда запрашивается новая веб-страница на этом веб-сайте, сервер будет возвращать запрошенную веб-страницу как обычно, но с URL-адресом этой веб-страницы и Доступ будет сохранен в файле журнала. Анализируя информацию, сохраненную в этом файле журнала, можно выявить историю посещений пользователя, часто посещаемые веб-сайты и привычки просмотра.

2.5. Развертывание

Web11: файлы cookie HTTP и некоторые проблемы безопасности

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

Каждый веб-браузер может хранить не менее 300 файлов cookie в файле размером 4 КБ и не менее 20 файлов cookie на сервер или домен.

Настроить файлы cookie

Веб-сервер и браузер взаимодействуют друг с другом через HTTP (протокол передачи гипертекста). Например, чтобы получить доступ к странице http://www.example.org/index.html, браузер подключается к серверу, отправляя HTTP-запрос следующим образом:

Web11: файлы cookie HTTP и некоторые проблемы безопасности

Сервер ответит, отправив браузеру простой текстовый пакет, называемый HTTP-ответом. Этот пакет может содержать строку, содержащую содержимое файла cookie:

Web11: файлы cookie HTTP и некоторые проблемы безопасности

Set-Cookie — это поле, которое указывает браузеру сохранять файл cookie и отправлять его на сервер в будущем каждый раз, когда будет запрос к серверу (если срок действия файла cookie все еще истек). Например, браузер отправляет запрос на http://www.example.org/spec.html, отправляя HTTP-запрос следующим образом:

Web11: файлы cookie HTTP и некоторые проблемы безопасности

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

Значение файла cookie может быть изменено сервером, отправив браузеру поле Set-Cookie: name=value в HTTP-ответе. Затем браузер заменит старое значение файла cookie этим новым значением.

Значение файла cookie может включать любой печатный символ ASCII, кроме «»,, «;» и белое пространство. Имена файлов cookie также не могут содержать символ «=», поскольку именно этот символ разделяет имя и значение.
Термин «крошка cookie» иногда используется для обозначения пары имя-значение файла cookie.

Файлы cookie также могут быть установлены с помощью Javascript или аналогичного языка сценариев. В Javascript объект document.cookie используется для установки файлов cookie. Атрибут HttpOnly отвечает за предотвращение чтения содержимого файлов cookie плохими сценариями.

Свойства файлов cookie

Помимо пары имя-значение, сервер также может установить ряд других свойств cookie: Домен, Путь, Срок действия, Максимальный возраст, Безопасность и HttpOnly. Браузер не будет отправлять эти атрибуты на сервер, он отправит только пару имя-значение. Эти атрибуты используются браузером, чтобы определить, когда удалять файлы cookie, блокировать файлы cookie или отправлять файлы cookie на сервер.

Домен и путь

Домен и путь определяют область действия файла cookie. Они позволяют браузеру определять, когда отправлять файлы cookie на сервер. Если не указано, по умолчанию используются домен и путь запрошенного объекта. Однако существует разница между набором файлов cookie для foo.com без атрибута домена и набором файлов cookie с атрибутом домена foo.com. В первом случае файл cookie будет отправлен только при наличии запроса на foo.com. В последнем случае файл cookie будет отправлен на все субдомены foo.com. Ниже приведен пример директивы Set-Cookie с веб-сайта после входа пользователя в систему из запроса на docs.foo.com:

Web11: файлы cookie HTTP и некоторые проблемы безопасности

Первый LSID файла cookie не имеет атрибута домена и имеет путь /accounts. Браузер будет отправлять файлы cookie только в том случае, если запрошенная страница содержится в docs.foo.com/accounts. Остальные два файла cookie, HSID и SSID, отправляются обратно на сервер при наличии запроса к любому поддомену foo.com.
Файлы cookie также могут быть установлены только для верхнего домена и его поддоменов. Установка файлов cookie на www.foo.com с www.bar.com не допускается по соображениям безопасности.

Срок действия и максимальный возраст

Атрибут Expires сообщает браузеру, когда следует удалить файл cookie. Дата в Expires выглядит следующим образом: «Wdy, DD Mon YYYY HH:MM:SS GMT». Max-Age также используется для указания даты истечения срока действия файла cookie. Давайте рассмотрим следующий пример:

Web11: файлы cookie HTTP и некоторые проблемы безопасности

Срок действия первого файла cookie истекает 15 января 2013 года. По истечении этого срока он будет использоваться браузером. Срок действия второго файла cookie made_write_conn не истекает, он используется в качестве файла cookie сеанса и будет удален при выключении браузера. Срок действия третьего файла cookie reg_fb_gate истек, он будет немедленно удален.

Безопасный и только Http

Свойства Secure и HttpOnly имеют значение null; вместо этого их наличие указывает на то, что применяются базы Secure и HttpOnly.

Атрибут Secure обеспечивает передачу файлов cookie в зашифрованном соединении. Если веб-сервер устанавливает файл cookie с атрибутом Secure из незащищенного соединения, файл cookie все равно может быть перехвачен атакой «человек посередине».

Атрибут HttpOnly предписывает браузеру не предоставлять файлы cookie через соединение, отличное от HTTP (или HTTPS), например Javascript, и, следовательно, затрудняет получение файлов cookie за счет использования уязвимостей межсайтового скриптинга (XSS).

3. Некоторые проблемы безопасности при использовании файлов cookie.

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

Подслушивание

Web11: файлы cookie HTTP и некоторые проблемы безопасности

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

Эту проблему можно решить, используя безопасный протокол между компьютером пользователя и сервером — протокол HTTPS. Сервер может использовать флаг Secure при настройке файлов cookie. В этом случае файл cookie будет отправляться только по зашифрованному каналу, например SSL-соединению.

Межсайтовый скриптинг

Web11: файлы cookie HTTP и некоторые проблемы безопасности

Языкам сценариев, таким как Javascript, разрешено считывать значения файлов cookie и отправлять их на произвольные серверы.

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

Web11: файлы cookie HTTP и некоторые проблемы безопасности

Когда жертва нажимает на указанную выше ссылку, браузер выполняет сценарий в атрибуте onclick: отправляет файл cookie жертвы на сервер Attacker.com.

Межсайтовый скриптинг — одна из распространенных уязвимостей веб-сайтов (третье место в топ-10 наиболее распространенных уязвимостей в 2013 году — по данным OWASP).

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

Подделка межсайтового запроса

CSRF (межсайтовая подделка запросов) или атака в один клик — это метод эксплуатации уязвимостей веб-сайта, при котором несанкционированные команды выполняются жертвами — пользователями, авторизованными на веб-сайте без их ведома.

CSRF обманом заставит браузер жертвы отправлять http-запросы веб-приложениям. Если срок сеанса жертвы не истек, вышеуказанные запросы будут выполняться с правами аутентификации жертвы.

Например, жертва Боб совершает транзакцию на веб-сайте определенного банка X. Фред — злоумышленник, этот парень знает, как работает сайт банка X, когда он хочет перевести деньги со счета A на счет B следующим образом:

http://bank.example.com/withdraw?account=accountA&amount=100&for=accountB

Он отправит Бобу вредоносное сообщение.

Если банк X сохранит информацию аутентификации пользователя в файле cookie, а Боб нажмет на ссылку выше, деньги Боба будут переведены Фреду.

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

4. Вывод

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


Как установить виджет macOS Big Sur/iOS 14 на Windows 10

Как установить виджет macOS Big Sur/iOS 14 на Windows 10

Версия Big Sur для macOS была официально анонсирована на недавней конференции WWDC. И вы можете полностью перенести интерфейс macOS Big Sur на Windows 10 с помощью инструмента Rainmeter.

Как защитить удаленный рабочий стол от вредоносного ПО RDStealer

Как защитить удаленный рабочий стол от вредоносного ПО RDStealer

RDStealer — это вредоносное ПО, которое пытается украсть учетные данные и данные путем заражения RDP-сервера и мониторинга его удаленных подключений.

7 лучших программ для управления файлами для Windows, которые заменят Проводник

7 лучших программ для управления файлами для Windows, которые заменят Проводник

Может быть, пришло время попрощаться с Проводником и использовать стороннее программное обеспечение для управления файлами? Вот 7 лучших альтернатив Windows File Explorer.

Как работает LoRaWAN? Почему это важно для Интернета вещей?

Как работает LoRaWAN? Почему это важно для Интернета вещей?

LoRaWAN или беспроводная сеть дальнего действия полезна для связи между маломощными устройствами на больших расстояниях.

8 способов открыть дополнительные параметры запуска в Windows 10

8 способов открыть дополнительные параметры запуска в Windows 10

Перейдя к «Дополнительным параметрам запуска», вы можете сбросить Windows 10, восстановить Windows 10, восстановить Windows 10 из файла образа, который вы создали ранее, исправить ошибки запуска, открыть командную строку для выполнения параметров, выбрать другие, открыть настройки UEFI, изменить настройки запуска. ..

Почему стоит хорошо подумать, прежде чем войти в систему через аккаунт социальной сети?

Почему стоит хорошо подумать, прежде чем войти в систему через аккаунт социальной сети?

Каждый раз, когда вы подписываетесь на новую услугу, вы можете выбрать имя пользователя и пароль или просто войти в систему через Facebook или Twitter. Но стоит ли вам это делать?

Инструкция по смене Google DNS 8.8.8.8 и 8.8.4.4

Инструкция по смене Google DNS 8.8.8.8 и 8.8.4.4

DNS Google 8.8.8.8 8.8.4.4 — это один из DNS, который предпочитают использовать многие пользователи, особенно для ускорения доступа к сети или доступа к заблокированному Facebook.

Как всегда запускать Microsoft Edge в режиме InPrivate в Windows 10

Как всегда запускать Microsoft Edge в режиме InPrivate в Windows 10

Если вы используете Microsoft Edge на общем компьютере с Windows 10 и хотите сохранить конфиденциальность своей истории просмотров, вы можете настроить Edge всегда запускать в режиме InPrivate.

Узнайте разницу между симметричным и асимметричным шифрованием

Узнайте разницу между симметричным и асимметричным шифрованием

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

Как выйти из полноэкранного режима в Windows

Как выйти из полноэкранного режима в Windows

Полноэкранный режим на вашем компьютере удалит ненужный контент. Итак, как выйти из полноэкранного режима Windows?