advanced
MFA, password hashing и refresh token rotation
Храните passwords через adaptive hashing, добавляйте phishing-resistant MFA где возможно и rotate refresh tokens с replay detection и revocation.
Пароли никогда не хранят в plaintext. Adaptive hashing — bcrypt, scrypt или Argon2id — с солью на пользователя и настроенным cost. Сравнение через constant-time API библиотеки.
import { hash, verify } from '@node-rs/argon2';
const passwordHash = await hash(plainPassword, {
memoryCost: 19456,
timeCost: 2,
});
const ok = await verify(passwordHash, candidatePassword);
MFA — второй фактор: TOTP, WebAuthn/passkeys (phishing-resistant), hardware keys. Step-up MFA для чувствительных действий при активной сессии.
Refresh token rotation выдаёт новый refresh при каждом использовании и инвалидирует предыдущий. Reuse (replay) — revoke всей token family, признак кражи.
На интервью: pepper при утечке БД; параметры Argon2; recovery codes и lockout без DoS.
Типовые ошибки: MD5/SHA для паролей; пароли по email; бессрочный refresh; обход MFA на API routes.
Чеклист:
- Argon2id/bcrypt с мониторингом cost.
- Phishing-resistant MFA для high-risk.
- Rotation refresh; детект replay.
- Rate-limit и аудит неудачных login.