Перейти к основному содержимому

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

Intotes реализует множество уровней безопасности для защиты данных и средств пользователей.

Аутентификация

JWT-токены

  • Access-токены: кратковременные (20 минут), для API-аутентификации
  • Refresh-токены: долгоживущие (72 часа), для получения новых access-токенов
  • Оба устанавливаются как HTTP-only cookies, предотвращая доступ JavaScript и кражу токенов через XSS
  • Подписаны серверным секретным ключом

OAuth 2.0

Поддерживаемые провайдеры: Google, GitHub, VK, Yandex, Telegram. Стандартный authorization code grant с параметром state для CSRF-защиты.

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

CORS

  • Разрешенные источники настраиваются для каждой среды
  • Cookies (credentials) включаются в кросс-доменные запросы

Лимиты запросов

  • Максимальный размер тела запроса: 1 МБ
  • Валидация Content-Type для POST/PUT/PATCH
  • Ограничение частоты по IP + эндпоинт (см. Ограничение частоты)

Заголовки безопасности

ЗаголовокЗначениеНазначение
X-Content-Type-OptionsnosniffПредотвращение подмены MIME-типов
X-Frame-OptionsDENYПредотвращение clickjacking
X-XSS-Protection1; mode=blockВключение XSS-фильтра
Referrer-Policystrict-origin-when-cross-originКонтроль информации referer

Безопасность данных

Пароли

  • Хешируются bcrypt перед хранением
  • Минимальная длина при регистрации
  • Сброс пароля требует подтверждения email

Конфиденциальные данные

  • Приватные ключи крипто-кошельков зашифрованы
  • OAuth-токены не хранятся после обмена
  • Email пользователя частично маскируется в реферальных отображениях

Сетевая безопасность

HTTPS

Все коммуникации API используют HTTPS. HTTP перенаправляется на HTTPS.

Cloudflare

  • DDoS-защита
  • SSL/TLS-терминация
  • CDN для статических ресурсов (изображения в R2)

Лучшие практики для потребителей API

  1. Всегда используйте HTTPS
  2. Безопасно храните токены -- используйте HTTP-only cookies вместо localStorage
  3. Реализуйте обновление токенов -- обрабатывайте 401 обновлением access-токена
  4. Валидируйте ответы -- проверяйте HTTP-коды и коды ошибок
  5. Используйте заголовки лимитов -- уважайте X-RateLimit-Remaining и Retry-After