Files
Balance/BalanceServer/docs/SECURITY.md
T

1.8 KiB
Raw Blame History

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

Credentials

Пароли пользователей должны храниться только в виде slow password hash с современным password hashing алгоритмом.

Не хранить plaintext password.

Tokens

Access/refresh tokens не должны попадать в:

  • application logs;
  • panic messages;
  • error responses;
  • analytics;
  • database debug dumps.

Authorization

Каждый sync mutation должен проверять ownership по authenticated user.

Нельзя доверять userId из client payload, если authenticated identity уже известна из token.

Правильная модель:

Authorization header
        ↓
authenticated user
        ↓
server-side ownership
        ↓
requested entity

Transport

Production API должен работать через HTTPS/TLS.

HTTP следует оставлять только для controlled local development.

Input validation

Проверяйте:

  • UUID/ID;
  • enum values;
  • amount;
  • timestamps;
  • string lengths;
  • batch size;
  • JSON size;
  • cursor/sequence bounds.

Logging

Безопасно логировать:

  • request ID;
  • endpoint;
  • status code;
  • latency;
  • batch size;
  • non-sensitive user/record identifiers в допустимой для проекта форме.

Нельзя логировать:

  • passwords;
  • Authorization headers;
  • access tokens;
  • refresh tokens;
  • полные request bodies финансовых данных без явной необходимости.

Abuse protection

Production deployment должен иметь:

  • rate limiting для auth endpoints;
  • reasonable request body limits;
  • timeouts;
  • graceful shutdown;
  • database connection limits;
  • monitoring.