Безопасность

Приватность — в основе.

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

трекеров — ни в продукте, ни на сайте
0
живёт код для входа
10 мин
живёт ключ к хранилищу
15 мин
для каждого фрагмента
SHA‑256

01Приватность

Ноль трекеров. Ни одного.

Никакой аналитики, телеметрии и отчётов о сбоях — ни в приложении для Mac, ни в веб-приложении, ни на этом сайте. Из продукта их удалили вместе с кодом, а не просто отключили. Шрифты загружаются с нашего домена, а строгая Content-Security-Policy не даёт страницам загружать код откуда-то ещё.

  • Аналитика
  • Телеметрия
  • Отчёты о сбоях
  • Запись сессий
  • Рекламные пиксели
  • Сторонние шрифты
Веб-приложениеContent-Security-Policy
default-src 'none';script-src 'self' 'nonce-…' 'wasm-unsafe-eval';style-src 'self' 'unsafe-inline';font-src 'self';img-src 'self' data: blob: <api> <storage>;media-src 'self' blob: <api> <storage>;connect-src 'self' <api> <storage> <live>;worker-src 'self' blob:;frame-src blob: <api> <storage>;object-src 'none';base-uri 'none';form-action 'none';frame-ancestors 'none'
Этот сайтContent-Security-Policy
default-src 'none';script-src 'self';style-src 'self' 'unsafe-inline';font-src 'self';img-src 'self' data:;media-src 'self';connect-src 'self';manifest-src 'self';object-src 'none';base-uri 'none';form-action 'none';frame-ancestors 'none'
ЦифрыЗначения по умолчанию
Трекеры
0
SDK аналитики и телеметрии
0
Сборщики отчётов о сбоях
0
Шрифты
со своего домена
Referrer-Policy
no-referrer
Встраивание в чужие сайты
запрещено
HSTS
1 год, preload

Страницы и файлы доставляет Cloudflare, наш хостинг. Мы за вами не следим, и ничто из того, что мы выпускаем, тоже.

02Вход

Нет пароля — нечего украсть. Код, затем сессия.

Вы входите по 6-значному коду из письма. Он действует 10 минут и сгорает после 5 неверных попыток, а мы храним только его отпечаток SHA‑256. Сессия длится час и продлевается токеном, который срабатывает ровно один раз.

ЦифрыЗначения по умолчанию
Код
6 цифр
Действует
10 минут
Неверных попыток
5
Хранится как
отпечаток SHA‑256
Сессия
60 минут
Токен обновления
одноразовый, с ротацией
Без повторного входа
до 30 дней
Пароли
нет

Если токен обновления предъявят второй раз, аккаунт выйдет из всех сессий.

03Доступ к хранилищу

Ключи живут минуты. Каждый открывает один диск.

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

ЦифрыЗначения по умолчанию
Срок ключа
15 минут
Обновление
за 5 минут до конца
Область
один диск
Ключи в браузере
нет
Где лежат файлы
Cloudflare R2
Формат
фрагменты с адресацией по хешу
При передаче
только HTTPS
При хранении
шифрует Cloudflare R2

04Целостность

Каждый байт проверен. Прежде чем его используют.

Файлы хранятся фрагментами, и каждый назван по своему SHA‑256. Каждый фрагмент сверяется с хешем, прежде чем его отдадут или положат в кэш, а каждую загрузку из браузера сервер проверяет заново — по блокам и целиком, прежде чем файл появится. Несовпадение — это ошибка, а не правдоподобная догадка.

ЦифрыЗначения по умолчанию
Хеш
SHA‑256
Проверяется
каждый фрагмент
Когда
до отдачи и кэширования
При несовпадении
отказ
Загрузки из браузера
сервер проверяет заново
Одинаковые данные
хранятся один раз на диске

05Приложение

Подписано, нотаризовано, проверяется перед обновлением.

Приложение для Mac подписано нашим Developer ID и нотаризовано Apple. Установщик отказывается ставить приложение на Mac, где оно не сможет работать, а обновление устанавливается, только если сошлись и SHA‑256, и подпись.

zsh

spctl --assess -v "/Applications/goframe drive.app"

/Applications/goframe drive.app: accepted

source=Notarized Developer ID

codesign -dv "/Applications/goframe drive.app" 2>&1 | grep Team

TeamIdentifier=Y5U8RN35QX

ЦифрыЗначения по умолчанию
Подпись
Developer ID
Team ID
Y5U8RN35QX
Нотаризация
Apple, тикет в пакете
Канал обновлений
только HTTPS
Перед установкой
SHA‑256 + Team ID
Локальный сокет управления
только владелец (0600)

07Честно

Чего мы пока не сделали.

Страницы о безопасности обычно перечисляют сильные стороны. Вот чего goframe drive сегодня не умеет — чтобы вы решали, видя всю картину.

  • Сквозное шифрованиеФайлы шифруются при передаче, а при хранении их шифрует Cloudflare R2 — но не ваше устройство. Клиентского шифрования и zero-knowledge нет.
  • Единый вход (SSO)Вход только по коду из письма: без SAML, без входа через Google или Apple, без ключей входа (passkeys) и второго фактора.
  • История версий и корзинаУдаление окончательное. Нет корзины, восстановления и резервных копий.
  • Пароль и срок у ссылокПубличной ссылке нельзя задать пароль или срок действия. Её можно заменить или отозвать.
  • Журнал аудитаКаждое изменение записывается на диске вместе с автором, но экрана аудита и выгрузки нет.
  • СертификатыSOC 2, ISO 27001 и подобных сертификатов сейчас нет.

08Связаться

Нашли уязвимость? Напишите нам.

Сообщения об уязвимостях и вопросы о безопасности присылайте на hello@goframe.dev. Опишите, что нашли и как это воспроизвести.