Платёжная инфраструктура живёт и умирает на своей security-posture. Вот что мы делаем, чего не делаем, и чего пока не имеем и не будем делать вид, что имеем.
1. Non-custodial по дизайну
Наша сильнейшая security-гарантия — архитектурная: мы не держим средства мерчанта. Никогда. Когда клиент платит картой, on-ramp конвертирует фиат в USDC, а наш on-chain splitter атомарно роутит это на ваш Polygon-кошелёк в той же транзакции. Наши серверы видят событие, не баланс. Нет hot-кошелька, нет пулов treasury, нет омнибус-аккаунта — нет хоней-пота, в который атакующему влезать. Если Peptide-Pay исчезнет завтра, ваши прошлые платежи останутся on-chain на вашем кошельке.
2. Инфраструктура
Хостинг: Vercel, глобальная edge-сеть и DDoS-защита.
State store: Upstash Redis с TLS в транзите и AES-256 at rest.
Settlement: Polygon mainnet, верифицируется on-chain — те же security-допущения, что у самой сети.
DNS и CDN: усилены HSTS preload, CAA-записями с пиннингом CA, DNSSEC включён.
Секреты: лежат в зашифрованном env-сторе Vercel; ротируются при offboarding'е сотрудника.
3. Аутентификация
Только magic-link — никаких паролей, нечего фишить, нечего переиспользовать из утечки.
Magic-link'и одноразовые, срок жизни 15 минут.
Dashboard-сессии короткоживущие (7 дней) и привязаны к браузеру, который вошёл.
Session-куки HTTP-only, Secure, SameSite=Lax.
Подозрительные входы (новая страна, новый ASN) триггерят email-алерт и могут быть отозваны из любой активной сессии.
4. Вебхуки
Каждый вебхук подписан HMAC-SHA256 вашим account-секретом; верифицируйте до того, как доверять payload'у.
Заголовок подписи содержит таймстемп; отбрасывайте всё старше 5 минут для защиты от replay.
Очередь повторов с экспоненциальным backoff (30с, 2м, 10м, 30м, 1ч, 3ч, 12ч, 24ч), потом drop.
Дропнутые вебхуки остаются re-play-able из дашборда 30 дней.
Публикуем текущий IP egress-диапазон — можете allowlist'ить на файрволе.
5. API-ключи
Ключи показываются один раз, хранятся захешированными (bcrypt) на сервере; мы их для вас достать не можем.
Ротация в любой момент из /app/settings — старый и новый ключи работают параллельно 24 часа, чтобы можно было деплоить без даунтайма.
Scoped-ключи в планах на Q3 2026; пока ключи full-access.
Rate-limit на ключ: 100 req/s soft, 1000/s hard.
6. Шифрование
В транзите: TLS 1.3 на каждом эндпоинте; TLS 1.2 допустим только для legacy webhook-потребителей и помечен к deprecation.
At rest: AES-256 на Upstash Redis и Vercel blob storage.
Email клиентов хешируются (SHA-256 с per-merchant-солью) до попадания в server-логи; только дашборд мерчанта рендерит их в открытую.