Руководства

Что такое cookie? Как сайты запоминают вас

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

Почему это важно, когда вы создаёте с помощью ИИ

Cookie лежат в основе нескольких функций, которые вы будете просить у ИИ-конструктора, часто даже не упоминая слово «cookie»:

  • Вход. В большинстве веб-приложений «оставаться в системе» означает session cookie. То, как он настроен, определяет, насколько легко его украсть.
  • Корзины и настройки. Корзина, которая переживает обновление страницы, часто опирается на cookie или на хранилище браузера.
  • Аналитика и реклама. Добавление Google Analytics, пикселя Meta или виджета чата обычно добавляет cookie от других компаний.
  • Юридические уведомления. Во многих странах некоторые cookie требуют сначала согласия посетителя, отсюда и появились баннеры с cookie.

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

Бытовая аналогия

Представьте номерок в гардеробе. Вы сдаёте пальто и получаете номерок с цифрой. Сам номерок не содержит пальто — только цифру. Каждый раз, когда вы возвращаетесь к стойке, вы показываете номерок, и гардеробщик знает, какое пальто ваше.

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

Как на самом деле работает cookie

  1. Вы заходите на сайт. В ответе сервера есть заголовок вида Set-Cookie: session_id=8f3k...; HttpOnly; Secure; SameSite=Lax.
  2. Ваш браузер сохраняет его, привязав к домену сайта.
  3. При каждом последующем запросе к тому же сайту браузер автоматически добавляет Cookie: session_id=8f3k....
  4. Сервер читает его и понимает, что это вы.

JavaScript страницы тоже может создавать cookie, но самые важные из них — сессии входа — должны устанавливаться сервером и быть скрыты от JavaScript.

Виды cookie

ВидЧто это значитПример
Сессионный cookieБез срока действия; удаляется при закрытии сеанса браузераКороткий шаг оформления заказа
Постоянный cookieИмеет срок действия (Expires или Max-Age) и переживает перезапуск«Запомнить меня на 30 дней»
СобственныйУстанавливается сайтом, открытым в адресной строкеВаш вход на этом сайте
СтороннийУстанавливается другим доменом, встроенным в страницуИдентификатор трекинга рекламной сети
Строго необходимыйНужен для сервиса, который запросил пользовательСессия входа, корзина покупок
НеобязательныйПолезен владельцу сайта, но не обязателенАналитика, реклама, A/B-тесты

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

Пример: небольшой интернет-магазин

Допустим, вы создали магазин, который продаёт свечи ручной работы. Вот какие cookie разумная версия устанавливала бы и почему.

session — устанавливается, когда владелец или покупатель входит в аккаунт. Он содержит только случайный ID; реальные данные сессии хранит сервер. Настройки: HttpOnly (скрипты страницы не могут его читать), Secure (отправляется только по HTTPS), SameSite=Lax (не отправляется в большинстве запросов, инициированных другими сайтами). Строго необходимый.

cart_id — позволяет посетителю, который не вошёл в аккаунт, сохранить свою корзину. Он указывает на корзину, сохранённую в базе данных. Строго необходимый, потому что посетитель сам попросил добавлять товары в корзину.

theme — запоминает тёмную тему. Это могло бы быть cookie, но ему не нужно доходить до сервера, поэтому проще localStorage браузера.

Cookie аналитики — добавляются, если вы установите инструмент аналитики. Они необязательные. В ЕС и Великобритании для них обычно требуется согласие до установки, поэтому скрипт аналитики должен ждать, пока посетитель не нажмёт «Принять».

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

Общие термины

ТерминЧто это значит
CookieНебольшая пара «имя–значение», которую браузер сохраняет и отправляет обратно на сайт.
Set-CookieЗаголовок ответа, с помощью которого сервер создаёт или обновляет cookie.
СессияЗапись сервера о вошедшем пользователе, связанная с ID в cookie.
HttpOnlyНе позволяет JavaScript страницы читать cookie, что ограничивает ущерб от внедрённых скриптов.
SecureCookie отправляется только по зашифрованным соединениям HTTPS.
SameSiteОпределяет, отправляется ли cookie в запросах с других сайтов (Strict, Lax или None).
Expires / Max-AgeКогда cookie должен быть удалён.
Domain / PathКакие адреса сайта получают cookie.
localStorageХранилище браузера, которое может читать код страницы, но которое автоматически не отправляется на сервер.
XSSМежсайтовый скриптинг: скрипт злоумышленника, выполняющийся на вашей странице, который может пытаться украсть данные.
CSRFМежсайтовая подделка запроса: другой сайт обманом заставляет браузер отправить запрос с вашими cookie.
Согласие на cookieЗапрос разрешения посетителей перед установкой необязательных cookie.

Частые ошибки и заблуждения

  • «Cookie — это вирусы». Это простой текст. Они не могут выполнять код на вашем компьютере.
  • Хранение чувствительных данных в cookie. Храните случайный ID, а данные держите на сервере.
  • Токены входа в localStorage. Любой скрипт на странице может читать localStorage, включая внедрённый. Cookie с HttpOnly вообще не могут читать скрипты страницы.
  • Отсутствие Secure и HttpOnly. Эти два флага дешёвые и закрывают распространённые уязвимости.
  • Предположение, что баннер покрывает всё. Баннер, который загружает аналитику до того, как кто-либо нажмёт «Принять», не выполняет свою задачу.
  • Забытый выход из системы. При выходе нужно удалить cookie и завершить сессию на сервере, чтобы скопированный cookie перестал работать.
  • «Если я не использую cookie, правила приватности не применяются». Такие правила, как GDPR, касаются персональных данных где бы они ни хранились — включая локальное хранилище, отпечатки устройств и серверные логи.

Что спросить у вашего ИИ-конструктора

  • «Составь список всех cookie, которые устанавливает приложение: для чего каждый, как долго действует и строго ли он необходим».
  • «Для сессии входа используй cookie с HttpOnly, Secure, SameSite=Lax. Не клади токены авторизации в localStorage».
  • «В cookie храни только случайный ID сессии; данные сессии держи на сервере».
  • «При выходе очищай cookie и аннулируй сессию на сервере».
  • «Не загружай скрипты аналитики и маркетинга, пока посетитель их не принял, и запоминай его выбор».
  • «Добавь в политику конфиденциальности простой раздел о cookie, который соответствует списку выше».

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

Cookie в Mythex

Mythex не предоставляет встроенного входа для пользователей вашего приложения, поэтому cookie вашего приложения берутся из его собственного кода и инструментов, которые вы в него добавляете, например session cookie от выбранного вами подхода к аутентификации. Попросите агента в чате перечислить их, ужесточить их настройки или добавить баннер согласия, и проверьте результат в живом превью перед публикацией. Хорошей стартовой формулировкой будет рецепт документации как добавить вход в приложение, а безопасность приложений, которые вы создаёте объясняет, как держать ключи и секреты вне браузера.

Вопросы

Что такое cookie на сайте?

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

Опасны ли cookie?

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

В чём разница между собственными и сторонними cookie?

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

Нужен ли баннер с cookie?

Это зависит от того, где находятся ваши пользователи и какие cookie вы используете. В ЕС и Великобритании необязательные cookie, такие как аналитика или реклама, обычно требуют сначала согласия, тогда как cookie, строго необходимые для работы сервиса, например сессия входа, обычно не требуют. Проверьте правила, которые действуют для вас.

В чём разница между cookie и localStorage?

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

Mythex · Pricing · Создавайте что угодно с ИИ · Шаблоны сайтов и приложений · Сравнения Mythex · Глоссарий по созданию приложений с ИИ · Бесплатные инструменты для создания приложений с ИИ · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)