Очистка данных сайта без нарушения границ аккаунта
Что удаляет очистка данных сайта, что остаётся и как разделять сессии при выходе и смене аккаунта.
Нужна структурированная документация по теме Идентичность?
Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.
Короткий ответ
Очистка данных сайта сбрасывает часть локального состояния, но не удаляет аккаунт и не стирает записи сервиса. Браузер может хранить cookies, localStorage, sessionStorage, базы IndexedDB, кэш-хранилище, регистрации service worker, разрешения и HTTP-кэш. У сервиса также остаётся сессия на сервере. Спецификация Clear-Site-Data описывает запрос от источника, а браузер решает, как его применить.
Нужно разделять три границы: состояние браузера, состояние аккаунта приложения и записи сервиса. Выход завершает серверную сессию. Очистка удаляет выбранное локальное состояние, чтобы старый аккаунт не восстановился. Резервные копии, другие устройства и другие источники находятся за пределами этой операции. В справке MDN о Clear-Site-Data и в StorageManager API описаны наблюдения, но не универсальный ластик.
Что считается данными сайта
Cookies автоматически отправляются с подходящими HTTP-запросами. Удаление cookie может убрать предъявление идентификатора, но сервер должен отозвать или завершить сессию. localStorage обычно переживает закрытие вкладки, а sessionStorage связано с контекстом верхнего уровня и обычно завершается вместе с ним. Эти хранилища сами не отправляются, хотя код страницы может скопировать их в запрос.
IndexedDB хранит структурированные объекты для локальной базы, черновиков и очередей без сети. Кэш-хранилище часто управляется service worker, поэтому старая кэш-запись может пережить обновление или выход. Регистрация worker, разрешения и HTTP-кэш имеют собственные циклы. Руководство по модели хранения сравнивает механизмы, а руководство по жизненному циклу кэша описывает очистку.
Clear-Site-Data ограничен источником
Заголовок Clear-Site-Data приходит от источника. Директивы "cache", "cookies", "storage" и "executionContexts" обозначают категории, которые пользовательский агент может очистить. Поддержка отличается между браузерами и версиями. Ответ account.example не может удалить состояние чужого источника или встроенного сервиса.
Заголовок является запросом, а не доказательством. Запишите источник, директивы, версию браузера и фактический результат. "storage" не удаляет серверные базы, резервные копии, данные других устройств и всё состояние в памяти. Используйте заголовок вместе с кодом приложения и действием серверной сессии.
Выход и смена аккаунта
Сначала инвалидируйте серверную сессию, затем удалите локальное состояние аккаунта и сбросьте память приложения. При ошибке сервера покажите ошибку и не объявляйте сессию завершённой. Другая вкладка может показывать старый экран: уведомляйте вкладки, отклоняйте устаревшие ответы и проверяйте сессию перед записью.
Смена аккаунта несёт тот же риск. До загрузки второго аккаунта удалите или изолируйте токены, кэшированные ответы, черновики, IndexedDB, очереди без сети и кэши worker первого аккаунта. Перезагрузка страницы не очищает состояние. Видимая команда должна объяснять, что будет удалено, и не обещать удаление данных провайдера или другого источника.
Частичное удаление и восстановление
Операция может быть заблокирована, не поддерживаться или пропустить хранилище. Считайте отсутствие данных нормальным состоянием и предложите вход, новый запрос или документированный сценарий восстановления. Нельзя выводить личность из наличия одного ключа.
Следующий запрос после очистки должен требовать действительную сессию. Очередь без сети может относиться к старому аккаунту: приостановите или удалите её по политике продукта и не отправляйте под новым аккаунтом. В журнале храните только минимальные результаты без cookie, токенов и содержимого.
Изолированные контексты для разрешённых проверок
BotBrowser предоставляет отдельные BrowserContexts с изолированными cookies, хранилищем и состоянием сессии и позволяет проверить разрешённый сценарий на двух тестовых аккаунтах. BotBrowser не может управлять ответом Clear-Site-Data, кодом очистки сайта, серверной инвалидацией, вытеснением браузера или данными за пределами контекста. См. документацию изоляции нескольких аккаунтов.
Создайте два контекста с синтетическими данными, запишите браузер и ожидаемые хранилища, выйдите из первого и убедитесь, что следующий запрос требует аутентификацию. Второй контекст должен сохранить свою сессию. Изоляция теста не доказывает удаление серверных данных.
Практический список
- Перечислите cookies, веб-хранилище, IndexedDB, кэш-хранилище, workers, разрешения, HTTP-кэш, память и очереди.
- Назначьте владельца, срок жизни и связь с аккаунтом для каждого элемента.
- Инвалидируйте серверную сессию, затем очистите локальное состояние и уведомите вкладки.
- Запишите директивы, браузер и результат
Clear-Site-Data; подготовьте резервный сценарий для частичной очистки. - Следующая навигация должна потребовать вход и показать чистое состояние или восстановление.
- Повторите проверку с двумя вкладками, сменой аккаунта, обновлением worker и вторым контекстом.
Встроенный фрейм может принадлежать другому источнику и иметь собственные cookies и хранилища. Основная страница не должна обещать их удалить.
Классифицируйте значение как учётные данные, предпочтение, действие без сети или публичный ресурс. От этого зависит удаление, отзыв, сохранение или восстановление.
Истёкший cookie не равен отозванной сессии. Сервер должен отклонять повторное использование идентификатора по своей политике.
Очистка должна быть идемпотентной. Повторный выход должен оставлять безопасное состояние даже при отсутствии базы, кэша или worker.
При изменении очистки проверяйте активный worker и версию кэша. Старый worker может перехватывать новый ответ.
Не определяйте аккаунт по наличию данных. Браузер мог восстановить профиль, быть общим или удалить состояние из-за политики.
Сообщение о хранении должно отделять локальное удаление от хранения у сервиса, чтобы человек выбрал правильное действие.
Для поддержки достаточно источника, версии браузера, директив и результата следующего запроса; не записывайте частные значения.
Сессии без пароля, cookies запомненного устройства и временная загрузка также требуют владельца и резервного сценария.
При общем профиле ролей используйте отдельные контексты или явную политику. Переключатель аккаунта сам по себе не разделяет хранилище.
Проверяйте заблокированную операцию. Квота, приватный режим и настройки администратора могут сделать хранилище недоступным.
Используйте синтетические данные и не помещайте реальные учётные данные в журналы.
Заранее объясняйте, будет ли перезагрузка, экран входа или сохранение безопасного предпочтения.
Руководство по разделению хранилища полезно для встроенного сервиса; разделение не заменяет очистку аккаунта.
Политика конфиденциальности может запретить операцию даже при правильном коде. Считайте результат резервным сценарием, а не новой личностью.
Владелец источника определяет срок хранения диагностики и роли, которым разрешено её читать.
Пустой ответ после выхода может быть нормальным; интерфейс должен отличать его от ошибки.
Сервер обязан проверять состояние для каждой чувствительной операции, а не только при первой загрузке.
Безопасные предпочтения могут сохраниться, если это объяснено; токены и частные ответы должны иметь ясный конец.
Изменение схемы нужно проверять на отсутствующих данных до публикации.
Повторяйте проверку после изменения атрибутов cookie, кэш-кода или правил сессии.
Журнал теста может хранить категории и результаты, но не значения аккаунтов.
Пользователю общего устройства нужна видимая и понятная команда очистки.
Очистку источника нельзя представлять как юридическое удаление аккаунта.
Для каждой смены аккаунта нужна явная политика ожидающей очереди.
В документации поддержки укажите владельцев браузера, приложения и сервера.
Восстановление должно сохранить безопасную работу, но не использовать старую сессию.
Частые вопросы
Удаляет ли очистка cookies аккаунт?
Нет. Удаляются локальные cookies, но аккаунт, серверные записи и сессии других устройств остаются у сервиса.
Стирает ли Clear-Site-Data: "*" всё?
Нет универсальной гарантии нет. Область ограничена источником и реализацией браузера. Проверяйте поддерживаемые браузеры и сообщайте фактический результат.
Равен ли новый контекст удалению данных?
Нет. Это изолированная начальная точка для разрешённой проверки, а не команда серверу или другому источнику.
Может ли service worker вернуть данные?
Да, если он оставил ответ в кэше или состояние в памяти. Версионируйте кэши и проверяйте следующий запрос после выхода.
Что показать при ошибке очистки?
Экран входа, повтор или понятное восстановление. Не заявляйте полное удаление, если сервис не завершил инвалидацию.
Источники
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.