Что такое cookies простыми словами
Cookies («Куки», «Кукисы», в переводе с английского — «Печеньки») — небольшие текстовые файлы, содержащие служебную информацию. Они создаются браузером автоматически при посещении веб-сайта и содержат информацию о нем. Пример работы показан на картинке ниже.
Что хранят cookie
Допустим, мы зашли на сайт интернет-магазина ошейников для собак и выбрали французский язык (почему бы и нет). Добавили в корзину пару шлеек и поводок. Что будет, если мы закроем вкладку и зайдём на сайт снова? Всё останется прежним: интерфейс на французском и три товара в корзине. Магия? Нет, cookie.
Cookie — один из инструментов, который формирует так называемый фингерпринт каждого пользователя в сети. Его можно сравнить с «отпечатком пальца», по которому можно узнать, что за человек покупает ошейник для собаки.
На вашем устройстве есть текстовый файл, в котором содержится различная информация о пользователе для каждого сайта — cookie. Она хранится для разных целей, в том числе и для удобства пользования сайтом. Cookie бывают временные (cookie-сессии) и постоянные. Давайте взглянем на них поближе.
Открываем панель разработчика в Chrome и переходим на рандомную статью на «Хабре». Во вкладке Network находим первый запрос, и в хедерах видим как проставляются cookie:

И в респонсе (ответе) видим cookie:
Set-Cookie: fl=ru; expires=Fri, 25-Feb-2022 08:33:31 GMT; Max-Age=31536000; path=/
Тут уже работает логика и Google (если очень нужно): cookie типа fl=ru(параметр, вероятно, отвечающий за язык) или те, которые хранят товары в корзине — постоянные cookie. Они не меняются, если пользователь их не трогает.
Например, при авторизации на сайте, в файл cookie проставляется условный session_id — уникальный идентификатор сессии на данный момент времени, к которому привязаны текущий браузер и пользователь.
Когда мы совершаем действия, доступные только этому пользователю, мы отправляем в хедер запроса (заголовок запроса, в него передаётся способ общения с сервером) и данные, которые локально сохранили в cookie, чтоб подтвердить, что это мы, а не условный программист из Финляндии. Временные cookie имеют срок годности и стираются в конце сессии, или становятся неактуальными с течением времени.
«зомби» cookie
Аналогичное название — «вечные» куки. В отличие от постоянных, они восстанавливаются после удаления. И сами по себе являются неудаляемыми или трудно удаляемыми. Восстановить их можно средствами программирования с помощью языка JavaScript.
Google chrome
В правом верхнем углу жмем на значок настроек (три точки):
Переходим в «Настройки»:
Раскрываем раздел «Дополнительные», жмем на «Конфиденциальность и безопасность»:
Ищем «Настройки сайта»:
В этих настройках на самом верху вы увидите раздел «Файлы cookie и данные сайта», переходим в него:
Убеждаемся, что ползунок рядом с опцией «Разрешить сайтам сохранять и читать файлы cookie» передвинут вправо, то есть окрашен синим цветом:
Microsoft edge
Для Internet Explorer включение (разрешение) прием куки осуществляется аналогичным образом:
Должна быть выбрана настройка «Не блокировать файлы cookie»:
Mozilla firefox
В правом верхнем углу кликаем на кнопку, на которой изображены три полоски, и переходим в «Настройки»:
Идем в «Приватность и защита»:
Убеждаемся, что «Защита от отслеживания» — стандартная. Она уже включает настройки куки по умолчанию.
Вы также можете выбрать «Персональную» защиту и вручную настроить cookie:
Opera
Для перехода в меню нажимаем на левую верхнюю кнопку и жмем на «Настройки»:
Раскрываем «Дополнительно», переходим в «Безопасность»:
Ищем «Настройки сайта», переходим:
Кликаем на «Файлы cookie и данные сайта»:
Передвигаем ползунок на опции «Разрешить сайтам сохранять и читать файлы cookie» или убеждаемся, что она включена:
Sql-инъекции кода
Давайте немного углубимся через ещё одну аналогию. Допустим, мы работаем официантом в элитном ресторане. Гости периодически просят изменить состав блюд. Официант отмечает, какие изменения внести в меню.
Недобросовестный официант анализирует и понимает, что на кухне не раздумывая выполняют любой запрос. Поэтому можно внести свои собственные изменения в заказ и повара безоговорочно приготовят блюдо. И он пишет на очередном рецепте:
«ДОБАВИТЬ перец И УБРАТЬ сахар».
Вот и всё. Пранк удался. Но мы на стороне добра, так что вместо того, чтобы заменять заказ, мы проверим, как на кухне умеют фильтровать изменения. Как этим пользуются хакеры? SQL injection — это намеренное внесение в базу данных извне. В нашем примере, кухня — это база данных. SQL-запросы — заказы от официантов.

Авторизация и аутентификация
Чтобы обеспечить безопасность системе и разрешить взаимодействовать с ней разным ролям пользователей (админы, модераторы и т.д.), важно понимать различия между авторизацией и аутентификацией.
Давайте представим, что мы приглашены на конференцию по автоматическому тестированию. Мы приходим, а на входе нас встречают добродушные помощники организаторов, которые спрашивают наше имя. «Лаврентий Куашников», — отвечаем мы и показываем паспорт. Организаторы ищут нас в списке и видят, что мы спикер. Нам выдают бейдж и проводят в отдельное помещение, где мы можем расположиться и подготовиться к выступлению.
Аутентификация — это проверка на соответствие заявленного имени пользователя (паспорта) с идентификатором в системе (Лаврентий Куашников). Авторизация — это предоставление нам прав в соответствии с нашей ролью в системе (отдельная комната для спикера).
Атрибут domain
Атрибут Domain указывает хосты, на которые отсылаются куки. Если он не задан, то по умолчанию берётся доменная часть адреса документа (но без поддоменов). Если домен указан явно, то поддомены всегда включены.
Например, если задано Domain=mozilla.org, то куки включены и в поддоменах, например, в vhod-v-lichnyj-kabinet.ru.
Атрибут path
Атрибут Path указывает URL, который должен быть в запрашиваемом ресурсе на момент отправки заголовка Cookie. Символ %x2F (“/”) интерпретируется как разделитель в URL-пути, подпути также будут учитываться.
Если задан Path=/docs, то совпадать будут следующие пути:
А эти пути совпадать не будут:
Быстрая загрузка сайтов
Cookie позволяют сделать веб-серфинг в Интернете более комфортным. После повторного посещения сайта, браузер подгружает данные и прочую сохраненную информацию из куки. Таким образом снижается нагрузка на сервер, сайт открывается быстрее, а пользователю не нужно повторно вводить регистрационные данные и настраивать сайт.
Вот что у меня появляется после повторного посещения сервисов Яндекс:
Благодаря cookies сайт меня помнит! А если вы желаете, чтобы он запомнил и пароль, то при авторизации нужно поставить галочку на «Запомнить».
В браузере на телефоне android
С включением куки не возникнет трудностей и в браузере на телефоне Android. В качестве примера приведу мобильную версию Google Chrome. В браузере нажимаем на три точки (как и в десктопной версии) и выбираем «Настройки»:
Идем в раздел «Настройки сайтов»:
Далее — в «Файлы cookie»:
Убеждаемся, что ползунок рядом с надписью «Файлы cookie» передвинут вправо (окрашен в синий цвет). Если нет — сделайте это простым движением.
Где лучше хранить пароли
Если вы боитесь, что ваши конфиденциальные данные с cookie будут похищены, можно не хранить пароли в браузере. При выборе функции «Запомнить меня» при авторизации пароли автоматически сохраняются в браузере. Управлять ей можно в «Меню»-«Настройки»-«Автозаполнение»-«Пароли»:
Лично у меня эта функция отключена. Я не доверяю сохранение паролей в браузере. Все пароли храню в специально предназначенной для этого программе KeePass (читайте обзор этой программы на нашем сайте). Это гораздо безопаснее, так как если ваш сайт атакуют хакеры, то они легко смогут добраться до паролей, которые хранятся в браузере. А вот взломать KeePass им вряд ли удастся.
Есть специальные расширения для браузеров (что это такое — читайте в статье Что такое браузер и для чего он нужен). Например, LastPass. С помощью этого плагина сохраненные пароли переносятся на отдельные сервера и хранятся там.
Но наиболее безопасным способом является хранение паролей в специальных программах для компьютера. KeePass я считаю более безопасной, так как.софт обладает многофакторной системой шифрования и хранит пароли в отдельном файле на компьютере, который вы, в свою очередь, можете загрузить в облако.
Где хранятся куки
При описании cookies я упомянул, что они хранятся на компьютере. Где именно? Они располагаются в папке с вашим браузером. Например, для браузера Opera:
Полный путь до файла в Опере и других браузерах
Двухфакторная аутентификация
Если в вашей входной двери есть замок только одного типа, то грабителю нужна только одна отмычка (отмычка одного типа). Если же у вас есть ещё и дополнительная защита (цепочка, навесной замок, собака), то грабителю будет сложнее вас ограбить. Скорее всего он передумает.
Для чего нужны куки
Файлы cookie предназначены для хранения различное информации, такой как:
Другие полезные функции для работы с куки в браузере
В разделе работы с cookie в браузере вы можете заметить и другие функции:
Первая функция — это удаление куки при выходе из браузера. То есть, каждый раз, когда мы закрываем обозреватель, регистрационные и другие данные удаляются. Таким образом, все куки превращаются в сессионные.
Зачем нужно удалять куки
Само по себе наличие cookies-файлов не вредно и даже, наоборот, полезно. Поэтому без особой необходимости не стоит их удалять. Вот несколько причин, когда вам может потребоваться удалить куки.
1 Чтобы другие люди не прочитали вашу почту и соцсети. Пример: у меня есть рабочий компьютер, которым, кроме меня, редко кто пользуется. Недавно моя жена заходила в свою почту, чтобы распечатать документ и после работы не нажала кнопку выхода:
Как включить (разрешить) прием куки в браузере
Некоторые сайты не работают без включенных cookies.Поэтому, вы можете увидеть сообщение, что требуется их включить. Как правило, куки включены в браузере по умолчанию. Но если они у вас по какой-то причине отключены, то их можно самостоятельно включить в настройках. Рассмотрим примеры для популярных браузеров.
Как запретить прием куки
Чтобы избежать удаления куки, можно просто запретить их принятие в браузере. Но в таком случае вы не сможете автоматически авторизовываться на сайте, получать персональную рекламу, а некоторые сайты могут работать некорректно. Рассмотрим, как запретить куки для популярных обозревателей.
Примечание: Отключение осуществляется в том же разделе, что и включение. Я не буду дублировать картинки-инструкции, которые показывают, как добраться до этого раздела. Если вы «заблудились» — обратитесь в раздел «Как включить (разрешить) прием куки в браузере».
Как удалить cookie
С включением разобрались — теперь я покажу, как вручную можно удалить cookie-файлы, а после я расскажу о лайфхаке, позволяющем сделать все это автоматически.
Примечание: Удаление осуществляется в том же разделе, что и включение. Я не буду дублировать картинки-инструкции, которые показывают, как добраться до этого раздела. Если вы «заблудились» — обратитесь к пункту «Как включить (разрешить) прием куки в браузере».
Какие типы cookie существуют
Перед тем, как рассмотреть существующие типы cookie, введем понятие сессии. Сессия — это сеанс пользователя в Интернете. При запуске браузера и вход на сайт стартует сессия, то есть начинается сеанс, как в кино. Сессия работает до закрытия браузера или до времени, которое задано на сервере (это может быть неделя, месяц).
Если информация о куках хранится на компьютере пользователя, то о сессии — на серверах сайтов. То есть, в пределах одной сессии могут храниться пароли, а после ее завершения эти данные удаляются.
Куки с префиксами
Из-за дизайна механизма кук сервер не может подтвердить, что куки были отправлены с защищённого источника (secure origin), или быть уверенным в том, где именно они были установлены.
Уязвимое приложение поддомена может установить куку с атрибутом Domain, тем самым открывая к ней доступ на всех других поддоменнах. Этот механизм может эксплуатироваться с атакой фиксация сессии.
Ознакомьтесь со статьёй фиксация сессии, чтобы узнать об основных методах защиты от этой атаки.
Тем не менее в соответствии с принципом защита в глубину вы можете использовать куки с префиксами, чтобы гарантировать специфические факты о куках. Доступны два префикса:
__Host-
Если в куке содержится этот префикс, она будет установлена заголовком
Set-Cookie
только в том случае, если кука будет содержать атрибутSecure
и если запрос будет отправляться из защищённого источника. Также кука не должна включать атрибутDomain
и должна содержать атрибутPath
со значением/
.__Secure-
Если в куке содержится этот префикс, она будет установлена заголовком
Set-Cookie
только в том случае, если кука будет содержать атрибутSecure
и если запрос будет отправляться из защищённого источника. Защита с помощью этого префикса слабее по сравнению с префиксом__Host-
.
Браузеры будут отклонять установку этих кук, если они не будут удовлетворять всем ограничениям. Заметьте, что куки с префиксами, созданные в рамках поддомена, будут ограничиваться только им или будут полностью игнорироваться. Так как бэкенд проверяет только куки с заранее известными именами при авторизации пользователя или валидации CSRF-токена, куки с префиксами фактически работают как защитный механизм от фиксации сессии.
Местоположение
Куки позволяют сохранить регион посетителя. Поисковые системы на основе этого подбирают информацию из вашего региона. Если вы захотите заказать суши и находитесь в Краснодарском крае, то поисковая система предложит вам кафе и рестораны из заданного региона:
Напутствие
Мы рассмотрели лишь несколько уязвимостей из множества существующих. Но это поможет войти в прекрасный мир тестирования безопасности. Чтобы ничего не забыть, мы с железными тестировщиками подготовили чеклист.
Думай, как хакер! Пытайся получить выгоду или навредить. Но только на своём проекте. Следи за новостями безопасности. Смотри реестр уязвимостей, читай статьи, которые пишут фирмы по обеспечению безопасности и мониторь новости про утечки данных. Обязательно пытайся разобраться в сути. И будь на стороне добра!
Настройки сайтов и сервисов
Cookie отвечает за индивидуальные настройки пользователя (например, визуальные: шрифты, цветовое оформление). К этому относятся настройки поисковых систем, социальных сетей и веб-сайтов. Самый простой пример, интернет-магазин Aliexpress:
Выбор языка, валюты и региона доставки сохраняется в куки. Если куки не будет, то придется каждый раз заново выбирать нужные параметры.
Ответы на вопросы читателей
Что такое куки на сайте и что такое куки в компьютере?
Итак, выше мы с вами разобрали что такое куки. Закрепим изученное, куки – это текстовый файл, который содержит в себе служебную информацию о посещенных сайтах, данных для авторизации, настройках, местоположении, персонализации. выбранных товарах и т.д.
Куки на сайте и куки на компьютере – это одно и тоже. При первом посещении сайта куки скачиваются на компьютер пользователя в корневую папку браузера и далее хранятся там. При повторном посещении сайта cookie подгружается сайтом для обеспечения более комфортного веб-серфинга пользователя.
Куки едины для всех браузеров, или для каждого создаются в отдельности?
Куки создаются для каждого браузера в отдельности и хранятся в папках, которые принадлежат конкретному сайту. То есть, если вы занимаетесь серфингом в Google Chrome и авторизованы там в электронной почте, то после открытия этого же сайта в Опере понадобится заново авторизоваться.
Что будет, если выключить cookie в браузере?
Оформление заказов в интернет-магазинах и сравнение товаров
Если вы отложите товар в корзину и покинете сайт, то после возвращения они никуда не исчезнут. Тоже самое касается агрегаторов, типа Яндекс Маркета. Добавление разных товаров в сравнение возможно только благодаря куки:
Очищение с помощью программы «ccleaner»
Удалить cookie-файлы можно и не залезая в настройки, с помощью сторонних программ. Наиболее популярной является CCleaner, которой я лично пользуюсь уже несколько лет. Она предназначена для очистки всякого файлового мусора, в том числе и куки. Программа может работать как с одним браузером, так и с несколькими одновременно, что очень удобно, так как не нужно лезть в настройки каждого браузера по отдельности.
Постоянные cookie
Постоянные cookie, в отличие от временных, не удаляются после закрытия браузера. Это как и есть куки, о которых мы говорим в статье. Они хранятся на компьютере и выполняют все приведенные функции, о которых я писал выше. Из-за того, что такие куки отслеживают активность пользователя для рекламных целей и собирают соответствующие данные, их еще называют следящими.
Причем некоторые сайты устанавливают период хранения постоянных куки. Например, вы единожды посетили сайт и ввели свои регистрационные данные, а затем в течении нескольких месяцев его не открывали. Зайдя на него вновь, вы обнаружите, что сервис попросит вас вновь ввести эти данные, так как из-за длительного периода бездействия они были удалены.
Регистрация и авторизация с помощью cookie
Начал освежать знания по php. Просматривая видеуроки на http://www.vhod-v-lichnyj-kabinet.ru/playlist?list=PLYZm5HGThGRBZ3ym2Ek0h4jQvYAxuPLBe я узнал, что используя сессии для регистрации и авторизации пользователей, при закрытии браузера и открытии его снова теряется факт входа в аккаунт пользователя, поэтому в этих видеоуроках было сказано, что необходимо использовать cookies (т. к. они сохраняются на жестком диске пользователя). Просмотрев видеоуроки на http://www.vhod-v-lichnyj-kabinet.ru/watch?v=qFxUApU6104&list=PLYZm5HGThGRBZ3ym2Ek0h4jQvYAxuPLBe , http://www.vhod-v-lichnyj-kabinet.ru/watch?v=ASdD2gasVsA&list=PLYZm5HGThGRBZ3ym2Ek0h4jQvYAxuPLBe , http://www.vhod-v-lichnyj-kabinet.ru/watch?v=Nyk60llAcMc&list=PLYZm5HGThGRBZ3ym2Ek0h4jQvYAxuPLBe , http://www.vhod-v-lichnyj-kabinet.ru/watch?v=ysmj-iQGkII&list=PLYZm5HGThGRBZ3ym2Ek0h4jQvYAxuPLBe я попытался написать регистрацию и авторизацию с использованием cookies, код которых приводится ниже. Я думал, но не удалось достичь фиксации входа в аккаунт при закрытии и открытии браузера. Помогите написать, используя сookies, с учетом, что их может существовать несколько для одного пользователя в случае, если человек по каким-то причинам решил создать несколько аккаунтов для одного сайта, регистрацию и авторизацию c сохранением входа на сайт. Привожу код
<?php
$connect = mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('tutorials');
if (isset($_POST['submit'])){
$username = $_POST['username'];
$login = $_POST['login'];
$password = $_POST['password'];
$r_password = $_POST['r_password'];
if ($password == $r_password){
$password = md5($password);
$query = mysql_query("INSERT INTO users VALUES ('', '$username', '$login', '$password')");
//setcookie($login, $password, time() 3600*24*7, "/");
}
else
{
die('Passwords not match');
}
}
if (isset($_POST['enter'])){
//echo "OK";
$e_login = $_POST['e_login'];
$e_password = md5($_POST['e_password']);
$query = mysql_query("SELECT * FROM users WHERE login='$e_login'");
$user_data = mysql_fetch_array($query);
if ($user_data['password'] == $e_password) {
setcookie($e_login, $e_password, time() 3600*24*7, "/");
echo '<form method="post" action="register.php">
<input type="text" name="username" placeholder="| Username" required /><br>
<input type="text" name="login" placeholder="| Login" required /><br>
<input type="password" name="password" placeholder="| Password" required /><br>
<input type="password" name="r_password" placeholder="| Repeat password" required /><br>
<input type="submit" name="submit" value="Register" /><br>
</form>';
echo 'You have already logged in<br>
<form method="post" action="register.php">
<input type="submit" name="logout" value="Logout" />
</form>';
}
else
{
echo "Wrong password or login";
}
}
else
{
setcookie($e_login, $e_password, time() - 3600*24*7, "/");
echo '<form method="post" action="register.php">
<input type="text" name="username" placeholder="| Username" required /><br>
<input type="text" name="login" placeholder="| Login" required /><br>
<input type="password" name="password" placeholder="| Password" required /><br>
<input type="password" name="r_password" placeholder="| Repeat password" required /><br>
<input type="submit" name="submit" value="Register" /><br>
</form>';
echo '<form method="post" action="register.php">
<input type="text" name="e_login" placeholder="| Entered login" required /><br>
<input type="password" name="e_password" placeholder="| Entered password" required /><br>
<input type="submit" name="enter" value="Enter" /><br>
</form>';
}
?>
Сессионные cookie
Альтернативное название — временные cookie. Они существуют, пока человек находится на странице сайта. После того, как он закрывает браузер, то есть завершает свою сессию, такие куки автоматически удаляются. Они не имеют срока действия и действительны, пока пользователь сидит на сайте.
Сторонние cookie
Сторонние куки, в отличие от постоянных, не хранятся на диске пользователя, а размещаются на сторонних серверах. Такой тип файлов обычно появляется, когда сайт содержит контент с других ресурсов, например рекламные баннеры. Используются для отслеживания истории посещений и для сбора информации для рекламодателей.
Токены и сессии
Давайте представим, что мы захотели вступить в тайный клуб любителей настольных игр. Туда просто так не попасть. Сначала нужно доказать, что мы подходим на роль члена клуба — любим настолки.
Итак, в клубе знают наше имя и фамилию, мы доказали, что любим игры, и теперь нам выдадут специальный пропуск, по которому мы сможем проходить в здание закрытого клуба. Теперь не нужно каждый раз доказывать, что мы — это мы. У нас есть волшебный ключ-пропуск, который открывает двери тайного клуба.
Чем опасны файлы cookie
Сами по себе куки абсолютно безопасны. Это текстовые файлы, содержащие только информацию с посещенных сайтов и ничего более. Заразиться вирусами через cookies невозможно. Тем не менее, если эта информация окажется в руках хакеров, то у вас могут быть проблемы. Какие? Об этом подробнее ниже, а пока посмотрим что содержит этот файл, если открыть его с помощью «Блокнота»:
Яндекс.браузер
Аналогичным образом куки включаются в Яндекс.Браузере. В правом верхнем углу кликаем на «три полоски» для вызова меню:
Выбираем «Настройки»:
Переходим в раздел «Сайты»:
Далее — в «Расширенные настройки сайтов»:
И ищем раздел, посвященный cookie-файлам. Кликаем на «Разрешены» или убеждаемся, что опция включена:
Заключение
Подошла к концу статья о cookie-файлах. Я рассказал, что это такое, где и как используется, а также наглядно показал, как работать с этими данными с помощью браузера. Мы выяснили, что куки безопасны сами по себе, но могут быть использованы хакерами в корыстных целях.
https://www.youtube.com/watch?v=CMiJ-3bF7GQ
Надеюсь, теперь вы лучше понимаете, как работает браузер и получили ответы на интересующие вас вопросы. Если же они остались — пишите в комментариях, я с радостью отвечу!