Self-hosted для Cloudflare Pages

Steam Guard-коды.
Прямо в браузере.

Загрузите maFile, получите случайный ID длиной 16 символов и открывайте authenticator с любого устройства. Логин и пароль Steam не нужны.

Без Steam credentials Шифрование в браузере
AUTHENTICATOR

Начните за минуту

Никаких аккаунтов на сайте: доступом служит случайный ID или ваш собственный длинный код.

Создать защищённое хранилище

Файл разбирается локально. В KV отправляется только зашифрованный минимальный набор данных.

Client-side only
1
2
необязательно

Сможете открыть тот же authenticator этим кодом вместо основного ID. Минимум 16 символов.

Используйте длинную уникальную фразу

ПОЧЕМУ SDA WEB

Прозрачно по умолчанию

Минимальная архитектура без сторонней аналитики, рекламных SDK и запросов к Steam.

02

Без логина и пароля Steam

Сайт никогда их не запрашивает. Для кодов используется только `shared_secret` из выбранного вами maFile.

03

Секреты шифруются локально

AES-256-GCM и PBKDF2 выполняются через Web Crypto API. KV получает только ciphertext.

DATA FLOW

Как это работает

Основной ID и альтернативный код работают одинаково: каждый независимо находит и расшифровывает свою запись.

01
{ }

Разбор maFile

Браузер читает JSON и оставляет только имя аккаунта и `shared_secret`.

02
AES

Локальное шифрование

Случайный 16-символьный ID становится ключом для зашифрованного контейнера.

03
KV

Хранение ciphertext

Pages Function сохраняет непрозрачную запись в привязанный Cloudflare KV namespace.

04
2FA

Код в браузере

После расшифровки HMAC-SHA1 генерирует текущий пятисимвольный Steam Guard-код.

ВАЖНО

maFile — это второй фактор вашего аккаунта

Любой, кто получит основной ID или альтернативный код, сможет генерировать Steam Guard-коды. Разворачивайте проект в своём Cloudflare-аккаунте, используйте HTTPS, выбирайте длинный уникальный код и не публикуйте ключи в чатах, скриншотах или логах.

Изучить исходный код

Удалить текущий способ доступа?

Эта зашифрованная запись будет удалена из KV. Другие привязанные к этому authenticator коды останутся активными.