Безопасность в Wavor Ваши бизнес-данные заслуживают такой же защиты, как и банк. Мы не просто говорим вам, ЧТО мы защищаем. Мы показываем вам, КАК.
AES-256 TLS 1.3 2FA DSGVO/GDPR UK GDPR LGPD (BR) DPDP (IN) Серверы ЕС
Шифрование AES-256
Чувствительные поля хранятся в зашифрованном виде. Чтение без ключа ничего не показывает.
Центры обработки данных ЕС (Hetzner DE)
Servers and customer files in Germany. Offsite backups sit encrypted outside the EU under the EU's transfer safeguards; the privacy policy names the provider.
Доступность и инфраструктура 6h
Интервал резервного копирования
Nerd zone It gets technical from here. You do not need to read any of it to use Wavor safely - it is here so it can be checked.
Архитектура безопасности Как ваши данные перемещаются. От запроса до хранения
ШАГ 1
Cloudflare Edge
Защита от DDoS, WAF, TLS 1.3 с резервным вариантом 1.2. Глобальная anycast сеть.
ШАГ 2
Cloudflare Tunnel
Происхождение физически недоступно. Только исходящее соединение с CF, без входящего порта. Доверие только для AOP с сертификатом Wavor RSA-4096.
ШАГ 3
Приложение Node.js
Валидация сессии, проверка 2FA, RBAC, валидация ввода через схемы Zod.
ШАГ 4
PostgreSQL + Vault
Encrypted storage with AES-256. Secrets in HashiCorp Vault.
TLS 1.3 (резервный вариант 1.2)
Полный строгий HTTPS на всех 7 доменах.
Защита от DDoS
Защита на краю до того, как сервер увидит запрос.
Где хранятся данные?
The servers are at Hetzner in Germany (Falkenstein and Nuremberg), customer files in object storage in Germany. The data centres are guarded around the clock, with biometric access. Backups and some services such as email, SMS and AI run through providers outside the EU. Those transfers are secured under the EU's rules, and the privacy policy names every provider.
Как защищены ключи?
Все API ключи и секреты в HashiCorp Vault (KV v2, зашифровано, с контролем доступа). Автоматическое предупреждение о ротации через 90/180/365 дней. Нет открытых секретов в коде, env или логах.
Как работает резервное копирование?
Automated PostgreSQL backups every 6 hours. Kept: every one for two days, one a day up to 14 days, one a week up to 90 days. Each is decrypted again and checked after encryption, and every night the newest is restored as a test. Offsite copy at Backblaze, encrypted with our own key before it leaves the server.
Слои защиты HTTP заголовки безопасности: 14 усиленных директив
CSP Level 3 (21 Direktiven)
Режим принудительного выполнения. Максимальный стандарт W3C, включая granular script-src-elem/-attr, Trusted-Types на поддомене администратора, whitelist для manifest/worker/media-src.
HSTS (Strict-Transport-Security)
max-age 1 год, includeSubDomains, предварительная загрузка включена.
X-Frame-Options
ЗАПРЕЩЕНО. Нет кликджекинга через iframes.
X-Content-Type-Options
nosniff. Браузеры не могут неверно интерпретировать MIME-типы.
Referrer-Policy
strict-origin-when-cross-origin.
Permissions-Policy
Камера, микрофон, геолокация. Все отключено по умолчанию.
COOP (Cross-Origin-Opener-Policy)
same-origin. Изолирует контекст просмотра.
CORP (Cross-Origin-Resource-Policy)
same-site. Ресурсы не могут быть встроены с другого источника.
Independently verifiable: Mozilla's HTTP Observatory grades the headers of wavor.io A+. A test asks Mozilla for the result again every night. https://developer.mozilla.org/en-US/observatory/analyze?host=wavor.io(developer.mozilla.org)
2FA: TOTP / SMS / Email
Три метода для второго фактора. Резервные коды одноразовые.
Распознавание устройства
Мгновенное уведомление о новых устройствах по электронной почте с IP + User-Agent.
Управление сессиями
Просмотр активных сессий, завершение индивидуально или выход из всех сразу.
Защита от грубой силы (3 уровня)
5 неудач на email / блокировка на 15 минут. 10 на IP / 1 час. 5 различных email с одного IP / бан на 24 часа.
Captcha Cloudflare Turnstile
Защита от ботов без кликовых головоломок. Скрипт загружается с crossOrigin anonymous + no-referrer. Нет утечки сессий в Cloudflare.
Хеширование паролей Bcrypt (стоимость 12)
Каждая попытка стоит вычислительного времени, что делает атаки списком неприемлемыми. Пароли >= 12 символов, проверка силы zxcvbn.
Валидация ввода Zod
Все входные данные API проверяются на стороне сервера с помощью Zod. Drizzle-Zod как единственный источник правды с схемой БД.
Rate limiting with a sliding window
A sliding window rather than fixed blocks, so a limit is not handed out afresh at the top of every minute. The counter currently lives in the individual worker process; once Redis is configured, all processes share one.
Тонкая настройка RBAC (закрытие при ошибке)
Роль + осведомленность о HTTP-методе: GET требует просмотра, POST/PATCH требуют редактирования, DELETE требует удаления. Отсутствие разрешения = 403, никогда не обойти.
Изоляция многопользовательских арендаторов
Область companyId в каждом запросе к БД. Нет утечки данных между арендаторами.
Журналы аудита
Каждая мутация записывается через eventLog + AuditLogger. Неизменяемый след с userId, companyId, действием, сущностью.
Approval by two people
Four actions need two approvals: changes to legal values, prices and terms, and a new sub-processor. While only one person is authorised, that person decides alone. The rule takes effect once there is a second.
Политика ротации секретов
Автоматическое предупреждение на 90/180/365 дней через secretRotation.ts.
Маскировка PII в ответах
Email, IBAN, телефон замаскированы для членов команды без доступа к PII. piiMasking.ts центральный.
Очистка журналов
Все логи централизованно очищаются. Ноль PII в логах, мониторинге или отладочном выводе.
API ключи с областями
Тонкие разрешения с истечением срока действия через apiKeyAuth.ts.
Мягкое удаление и восстановление
28-дневное восстановление удаленных данных. Столбец deletedAt с автоматическим фильтром запроса.
Data export
Полный экспорт JSON всех данных пользователя за один запрос. Удаление через поток DSAR (статья 17).
Защита данных Concrete technical measures
Шифрование на уровне полей (AES-256-GCM)
IBAN, налоговый идентификатор, социальное обеспечение, банковские реквизиты, секреты TOTP 2FA и одноразовые коды (вход/верификация/сброс): AES-256-GCM с 96-битным IV, 128-битным тегом аутентификации. Случайный IV для каждого шифрования.
Шифрование с закрытием при ошибке
Без ENCRYPTION_KEY в производстве: сервер отказывается запускаться. Нет возврата к открытым текстам (GDPR статья 32 лит. a).
Обнаружение подделки (GCM)
AES-GCM auth-tag обнаруживает любое вмешательство в шифротекст. Дешифрование жестко терпит неудачу. Никогда не молча принимается.
HMAC-SHA256 Поиск Хешей
Зашифрованные поля остаются доступными для поиска через детерминированный HMAC. Отдельный ключ (разделение ключей по NIST SP 800-57).
Управление ключами Vault
ENCRYPTION_KEY + SESSION_SECRET + все API ключи в HashiCorp Vault (KV v2). Нет открытого текста в коде, окружении или журналах.
Версионирование ключей для ротации
Формат шифротекста v1:iv:data:tag. Можно переключить на новую версию без потери данных.
Безопасность цепочки поставок Защита от скомпрометированных зависимостей (event-stream 2018, ua-parser-js 2021)
Dependencies as a build gate
Every build checks all dependencies against the vulnerability database. New findings block; known ones sit in a dated baseline that may only shrink.
Уведомления Dependabot
GitHub Dependabot проверяет ежедневно по базе данных CVE. Автоматические PR по безопасности.
Файл блокировки зафиксирован
package-lock.json в репозитории. Предотвращает CI от загрузки различных версий, чем локальные.
SSRF protection on outbound fetches
Every address that comes from user input is checked before Wavor fetches it. Private networks are blocked, and each redirect is checked again instead of being followed blindly.
Автоматические патчи безопасности
unattended-upgrades installs operating-system security fixes automatically.
Внешние скрипты: CORS + Referrer
Turnstile (Cloudflare) загружается с crossOrigin anonymous + referrerPolicy no-referrer. Нет утечки учетных данных.
Мониторинг и наблюдаемость Отслеживание ошибок (самостоятельный хостинг)
Уведомления об ошибках в реальном времени с трассировками стека.
Метрики (Prometheus + Grafana)
Задержка запросов, запросы к БД, память, пользовательские бизнес-метрики.
Мониторинг сервера
Доступность, ЦП, память, диск: автоматические проверки 24/7.
Безопасность загрузки файлов (7-уровневая структура) Защита от вредоносного ПО, полиглотных атак, SVG-XSS, обхода путей, MIME-сканирования.
Уровень 1: Абсолютный размер (100 МБ)
Жесткий лимит против zip-бомб и DoS. Multer + защита в глубину.
Уровень 2: Ограничение по типу размера
Изображения 5 МБ, PDF 20 МБ, видео 100 МБ. Ограничения по типам.
Уровень 3: Белый и черный списки MIME
Разрешено 22 типа. HTML/JS/EXE/SH/JAR явно заблокированы (векторы XSS).
Уровень 4: Санитизация имен файлов
Путешествия по пути (../), нулевой байт, зарезервированные имена Windows заблокированы.
Уровень 5: Проверка магического байта
Содержимое файла ДОЛЖНО соответствовать расширению + MIME. Библиотека типов файлов обнаруживает атаки 'evil.exe переименован в picture.jpg'.
Уровень 6: Санитизация SVG
DOMPurify удаляет встроенные <script> теги из SVG. Без очистки загрузка SVG является распространенным вектором XSS.
Layer 7: virus scan
Server-side virus scan before storage, provided the scanner is running on the server. If it is missing, that is logged rather than passed over silently.
Защита от XSS в глубину (4 уровня) Хранимый, отраженный, DOM, XSS цепочки поставок. Все векторы покрыты.
Уровень 1: Авто-экранирование React JSX
Все пользовательские вводы экранируются по умолчанию. Теги <script> отображаются как текст, никогда не выполняются. Правило кода: никогда не используйте dangerouslySetInnerHTML с пользовательским вводом.
Уровень 2: Санитайзер DOMPurify
sanitizeProse() + sanitizeEmailPreview() очищают HTML статьи, предварительные просмотры электронной почты + markdown. Удаляет <script>, <iframe>, обработчики on* и javascript:/data: URI.
Уровень 3: CSP script-src 'self'
Даже если слои 1+2 потерпят неудачу: браузер блокирует иностранные скрипты. Белый список только для Stripe + Turnstile captcha.
Уровень 4: Доверенные типы (Администратор)
require-trusted-types-for 'script' на admin.wavor.io заставляет каждую манипуляцию DOM проходить через политику. Предотвращает ошибки библиотек, вызывающие DOM-XSS.
Дорожная карта сертификации Мы прозрачны: мы находимся на этапе развития и пока не имеем формальных сертификатов. Но мы уже внедряем стандарты и активно работаем над ними.
DSGVO / GDPR (EU)
Реализовано UK GDPR (Data Protection Act 2018)
Реализовано LGPD (Brasilien)
Реализовано DPDP Act 2023 (Indien)
Реализовано AVG (Niederlande)
Реализовано FADP (Schweiz)
Реализовано ePrivacy (Cookie-Consent)
Реализовано DSA (Digital Services Act)
Реализовано
SOC 2 Type II
Запланировано
ISO 27001:2022
Запланировано
ISO 27017 + 27018 (Cloud)
Запланировано
ISO 27701 (Privacy)
Запланировано
ISO 42001 (AI Management)
Запланировано
BSI C5 Type II
Запланировано
CSA STAR Level 1
Запланировано Мы дополнительно согласуемся с Законом ЕС о ИИ, NIS2 и GoBD (немецкий бухгалтерский учет). Это регламенты, а не сертификаты.
We only work with vetted, certified providers. Each one has been checked for security and data protection.
Hetzner Online GmbH ISO 27001, data centre in Germany
Cloudflare, Inc. SOC 2, ISO 27001
Stripe Payments Europe Ltd. PCI DSS Level 1
Amazon Web Services, Inc. (AWS) ISO 27001, SOC 2
OVH SAS (OVHcloud) ISO 27001, stored in Germany. Encryption at rest by the provider (AES-256).
Backblaze, Inc. SOC 2. Bucket with Object Lock (compliance mode): once written, a backup cannot be deleted before its retention date.
Twilio, Inc. SOC 2, ISO 27001
Mistral AI SAS SOC 2 Type II, ISO 27001/27701, data in the EU
OpenAI LLC SOC 2 Type II, no training on API inputs
OpenProvider B.V. EU-based (Netherlands)
Сообщить о проблеме безопасности Нашли уязвимость? Сообщите об этом конфиденциально нашей команде. Мы серьезно относимся к каждому отчету и свяжемся с вами как можно быстрее.
Сообщить