/
kochkatech
/
CorpGame
Обзор
Документация
Войти
/
kochkatech
/
CorpGame
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
dev
backend/src/auth/password.ts
15 строк
1 KB
kochkareal
feat(devops): свод к одному процессу Node на SQLite, портативная сборка без Docker; аудит безопасности
06 авг 2026, 15:06
06 авг 2026, 15:06
3266bcd
Код
Авторство
О чём код?
import { createHash, timingSafeEqual } from 'node:crypto'; /** * Сравнение пароля без утечки через тайминг: обычный `===`/`!==` возвращает результат тем * быстрее, чем раньше нашлось несовпадение, и по разнице во времени ответа теоретически * можно восстанавливать пароль посимвольно. `timingSafeEqual` сравнивает буферы за время, * не зависящее от их содержимого, — но требует буферы ОДНОЙ длины, а длина пароля сама по * себе не секрет, которым стоит рисковать. Поэтому сравниваем не сами строки, а их SHA-256 * (фиксированная длина 32 байта), и заодно не переживаем за разную длину. */ export function passwordsMatch(input: string, expected: string): boolean { const a = createHash('sha256').update(input).digest(); const b = createHash('sha256').update(expected).digest(); return timingSafeEqual(a, b); }