Доверие и соответствие

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

Эта страница — для того, кто перед подписанием договора спрашивает: куда попадают данные наших клиентов? Каждое утверждение здесь можно проверить, а то, чего мы пока утверждать не можем, написано так же прямо, как и всё остальное.

Серверы в ЕС — в Германии HTTPS для всего трафика Пароли только в виде хеша Ответственное раскрытие уязвимостей

Без платёжной карты · Данные в ЕС · Неограниченное число репортёров

Инфраструктура

Где данные лежат и как они путешествуют

Ни одна копия данных не хранится за пределами Европейского союза — кроме поставщиков, поимённо названных в политике конфиденциальности.

Серверы в Европейском союзе

Приложение, база данных и загруженные файлы работают на серверах Hetzner Online GmbH в Германии. Резервные копии остаются в той же юрисдикции.

HTTPS везде

Виджет, панель, API и публичные страницы работают только по TLS. HTTP-запрос перенаправляется на HTTPS, а HSTS заставляет браузер в следующий раз сразу идти по HTTPS.

Cloudflare перед приложением

CDN, DNS и защита от DDoS и ботов. Там же завершается TLS-соединение. Настоящий IP-адрес посетителя восстанавливается на сервере, чтобы лимиты по IP работали правильно.

Заголовки ответа

Что отправляет само приложение

Эти заголовки приходят из кода приложения, а не из конфигурации одного сервера. Поэтому ответ одинаков в любой среде — при разработке, в тестах и в продакшене.

Заголовок Значение Что он делает
Content-Security-Policy default-src 'self'; … На публичных страницах скрипты, стили, шрифты и изображения приходят с нашего собственного домена. Чужой источник в политике разрешён только для аналитики — Google Analytics 4, который без согласия на cookie ничего не измеряет и описан в политике cookie. Встроенные скрипты подписаны одноразовым nonce для каждого запроса, а в style-src нет unsafe-inline — именно поэтому на этих страницах нет ни одного атрибута style. В колонке «Значение» показана первая директива; полный список возвращает сам заголовок.
X-Frame-Options SAMEORIGIN Страницу нельзя поместить в чужой фрейм, а значит, нельзя наложить прозрачный слой и уговорить посетителя нажать кнопку. Исключение — виджет и публичные ссылки, которые клиент встраивает намеренно.
Permissions-Policy camera=(), microphone=(), geolocation=(), payment=(), usb=() У браузера отбираются API, которые сервису не нужны: камера, микрофон, геолокация, платежи и USB.
X-Content-Type-Options nosniff Браузер не угадывает тип файла по содержимому — загруженный файл не может превратиться в исполняемый скрипт.
Referrer-Policy strict-origin-when-cross-origin На чужой сайт передаётся только домен, а не полный URL с параметрами.
Cross-Origin-Opener-Policy same-origin Публичные страницы изолируются в процессе браузера от окон, которые их открыли.
Strict-Transport-Security max-age Приходит от Cloudflare, а не из кода приложения. Это осознанный выбор: includeSubDomains, выставленный из кода, мог бы заблокировать поддомен, который ещё не работает только по HTTPS.

Проверьте сами: откройте любую страницу этого сайта в инструментах разработчика и посмотрите заголовки ответа. Ровно то же самое делает наш сканер безопасности на сайтах клиентов.

Учётные записи и доступ

Кто попадает в панель

Шесть вещей, которые запрограммированы, а не обещаны.

  • Пароли никогда не хранятся в открытом виде — только как криптографический хеш с солью. Алгоритм выбирает автоматический режим Symfony, берущий самый сильный из доступных в среде (Argon2id или bcrypt).
  • Вход ограничен: после пяти неудачных попыток за 15 минут вход притормаживается. Перебор паролей не работает.
  • Форма входа защищена CSRF-токеном, а вся панель добавляет сверху схему double-submit: каждый запрос, меняющий данные, должен вернуть токен, выданный именно этой сессии.
  • Роли разделены. В рабочем пространстве есть владелец, участник и наблюдатель; роль системного администратора — совершенно отдельная и клиентским аккаунтам не выдаётся.
  • Рабочие пространства изолированы. Проекты, отчёты об ошибках и результаты мониторинга принадлежат одному пространству, и эта принадлежность проверяется в каждом запросе, а не только в меню.
  • Сессионная cookie имеет SameSite=Lax, а по HTTPS помечается как Secure, поэтому она не путешествует вместе с запросами с чужих сайтов.
Данные

Что виджет собирает — и чего не собирает

Содержимое отчёта об ошибке принадлежит вам; мы — обработчик. Вот точный список того, что попадает в один отчёт.

Попадает в отчёт Собирается

  • Заголовок, описание и — по желанию — e-mail, которые вводит сам отправитель.
  • Скриншот ровно в том виде, в каком его оставил отправитель — со стрелками, выделениями и размытыми полями.
  • Логи консоли браузера и необработанные ошибки JavaScript со стеком вызовов.
  • Неудачные сетевые запросы: метод, адрес, код статуса и длительность.
  • URL страницы, браузер и его версия, операционная система, размер экрана и окна, часовой пояс и язык.
  • Видео экрана и голосовой комментарий, если отправитель их записывает — запись начинается только после его подтверждения и только там, где это разрешает тариф.
  • Повтор сессии: примерно последние 20 секунд событий страницы перед отчётом, если функция включена для проекта.

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

Не попадает в отчёт Не собирается

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

Количество сохраняемых диагностических записей можно уменьшить настройкой виджета data-diagnostics-limit.

Инструмент размытия

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

Хранение

Сколько хранятся данные

Сроки хранения — часть тарифа и применяются автоматически. Цифры взяты из того же каталога тарифов, по которому работает само приложение.

Тариф Хранение отчётов История мониторинга
Solo 90 дней 30 дней
Starter 365 дней 30 дней
Studio Без ограничений 365 дней
Agency · Enterprise Без ограничений Без ограничений
  • Отдельный отчёт можно удалить в панели в любой момент — он исчезнет сразу, не дожидаясь срока.
  • При закрытии аккаунта данные удаляются в течение 30 дней; до этого их можно выгрузить. Это записано в условиях, а не только на этой странице.
  • У журналов безопасности и бухгалтерских документов свои сроки — они перечислены в политике конфиденциальности.

Субобработчики

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

Смотреть список в политике конфиденциальности

Нашли уязвимость?

Напишите на [email protected]. Мы подтверждаем получение, разбираемся и сообщаем, когда исправление вышло.

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

[email protected] · security.txt (RFC 9116)

Честно

Чего мы пока не можем утверждать

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

Пока нет

Нет сертификации SOC 2

У нас нет ни отчёта SOC 2 Type I, ни Type II, и мы такой аудит не проходили. Если это ваше закупочное требование, сегодня мы его не выполняем.

Пока нет

Нет ISO 27001

Сертификата нет, и мы не заявляем, что «соответствуем ISO 27001». Без сертификата эта фраза не значит ничего.

Пока нет

Нет независимого теста на проникновение

Публичного отчёта о пентесте мы не предлагаем. Наш собственный сканер безопасности проверяет и наш сайт, но это не независимый аудит, и мы его так не называем.

Пока нет

Нет двухфакторной аутентификации

В панели пока только пароль. Двухфакторный вход в планах, но, пока его нет, мы не пишем его в списке возможностей.

Пока нет

Нет штрафа за простой

Цель по аптайму и обязательство объявлять плановые работы минимум за 24 часа записаны в условиях; механизм компенсаций существует только в индивидуальном договоре Enterprise. Публично измеряемого SLA со штрафами мы не предлагаем.

Пока нет

Нет выбора региона данных

Все клиенты находятся на одной инфраструктуре в ЕС, в Германии. Выбрать другой регион или отдельный экземпляр сейчас нельзя.

Нужно заполнить анкету по безопасности?

Пришлите свою анкету или список вопросов. Отвечаем с той же честностью, что и на этой странице, — и там, где ответ «нет», мы так и пишем.

Вопросы безопасности: [email protected]