← Все статьи

Что на самом деле лежит в профиле браузера и как его правильно бэкапить

4 мин чтения profilesbackupsecurity

Профиль браузера - не файл настроек. Это куки для каждого сайта, где вы залогинены, localStorage и IndexedDB для каждого приложения, хранящего состояние на клиенте, сохранённые пароли и всё чаще passkey, у которых нет парольного запасного пути. Отнеситесь к каталогу как к экспорту закладок - и рано или поздно потеряете аккаунт, в который больше не войти.

Что лежит внутри каталога

Каталог данных пользователя Chromium содержит, помимо кучи ненужного кеша: базу SQLite с куками, хранилища leveldb Local Storage и IndexedDB, Login Data (сохранённые пароли, зашифрованные), Web Data (автозаполнение) и состояние восстановления сессии. Cache, GPUCache и кеш кода велики и восстанавливаются сами, поэтому настоящий бэкап должен их исключать, а не копировать.

Passkey - самый новый и самый непрощающий пункт в этом списке. Passkey привязан к аутентификатору, и эти учётные данные живут только там, где были созданы. Для passkey нет сценария «сбросить пароль», как для пароля. Если профиль, в котором он лежал, исчез, исчезла и ваша возможность войти, если только сайт не разрешает зарегистрировать второй аутентификатор, а многие до сих пор не разрешают.

Почему копирование сырой папки между машинами не работает

Ломают это три разные вещи, и ломают молча, а не понятной ошибкой:

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

Шифрование учётных данных, привязанное к ОС. Сохранённые пароли в Login Data зашифрованы ключом, привязанным к хранилищу учётных данных операционной системы: DPAPI на Windows, Keychain на macOS. Перенесите сырой файл на другую машину - и зашифрованные блобы там нечитаемы. Это сделано намеренно, а не баг, который можно обойти заплаткой.

Абсолютные пути. Часть состояния профиля, особенно состояние расширений, ссылается на собственный путь профиля в файловой системе. Профиль, созданный в C:\Users\alice\profile-01 и положенный в /home/bob/profile-01 на другой ОС, будет содержать записи, указывающие на несуществующий путь.

Что должен содержать переносимый экспорт

Формат, сделанный для переноса между машинами, обязан решить все три задачи: чистый снимок, снятый при закрытом браузере (без борьбы за блокировки), учётные данные, переупакованные так, чтобы не зависеть от хранилища ключей исходной ОС, и пути, относительные к архиву, а не зашитые абсолютными. В него должны входить базы куки и хранилища, сохранённые входы и хранилище passkey и не должны входить Cache и GPUCache, которые лишь раздувают архив, не делая его полезнее.

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

Частота бэкапов

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

Когда всё это не нужно

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

Относитесь к архиву как к учётным данным

Файл переносимого профиля - не инертный бэкап. В нём живые куки сессий и, где зарегистрированы, рабочие passkey, а значит, любой, у кого есть этот файл, может действовать от имени залогиненного аккаунта без всякого запроса пароля. Храните его так, как хранили бы SSH-ключ или API-токен: зашифрованным, не пересылая почтой, не оставляя в общей папке.

Проверьте сами

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

Страница безопасности или автоматизация passkey.

Попробуйте на бесплатном тарифе.

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