docs: describe ASCII 8-72 password policy and drop resolved discrepancy (WealthLedger/docs#46)
Conventional commits / commits (pull_request) Successful in 13s
Docs security / security (pull_request) Successful in 7s
Docs verify / verify (pull_request) Successful in 12s

Document the register and login password rules and the bcrypt 72-byte reason,
remove the known frontend/backend discrepancy block and the link to it.
Refs WealthLedger/backend#60.
This commit is contained in:
2026-10-16 10:11:36 +03:00
parent 1c89d321b1
commit 16d31b7a3e
2 changed files with 15 additions and 10 deletions
+13 -7
View File
@@ -11,14 +11,20 @@
Пользователь регистрируется или входит по email и паролю. Регистрация сразу
создаёт первую сессию. Внешние пробелы email удаляются, буквы приводятся
к нижнему регистру. Backend требует пароль не короче 12 символов и не длиннее
72 UTF-8 байтов.
к нижнему регистру.
**Известное расхождение:** сохранённое требование регистрации и проверка
в форме frontend считают нижнюю границу в UTF-8 байтах, а backend — в символах.
Не-ASCII пароль может пройти форму и получить отказ API. Это не принятое
изменение password policy; требуется отдельное согласованное решение
о проверке пароля и подтверждение полного HTTP-потока.
Пароль при регистрации — от 8 до 72 печатных ASCII-символов: латинские
буквы, цифры, спецсимволы и пробел. Кириллица, emoji, другие не-ASCII и
управляющие символы отклоняются. Пароль не обрезается и не нормализуется, а
обязательных классов символов нет. Верхняя граница вытекает из bcrypt, который
учитывает только первые 72 байта: для ASCII символ равен байту, поэтому
длинный пароль не обрезается молча. Frontend и backend проверяют одну и ту же
политику.
При входе проверяется только то, что пароль непустой и не длиннее 72 UTF-8
байтов. Минимум и набор символов не применяются, чтобы пользователь,
зарегистрированный по прежним правилам (в том числе с не-ASCII паролем), мог
войти. Невалидный пароль получает `400` с кодом `VALIDATION_ERROR`.
Access token действует 15 минут и хранится только в памяти браузера.
Refresh token имеет серверный срок 7 дней, заменяется при восстановлении