0.33.0
Added
- P3-S1: PasswordPolicy — настраиваемая политика паролей (
MinLength,RequireUpper,RequireDigit,RequireSymbol,CheckHIBP). HIBP-проверка через k-anonymity API (SHA-1 prefix range lookup). Единая функцияValidatePasswordзаменяет 3 вызоваlen < 8вuser.goиoauth.go.DefaultPasswordPolicy— обратная совместимость (min 8). - P3-S3: rand.Read error handling —
generateRandomString,generateAuthCode,GenerateRefreshToken,GeneratePKCEVerifierвозвращают(string, error)с проверкойrand.Read.generateFamilyID— panic при ошибке (криптография без энтропии).generateOrLoadSecret—slog.Error+os.Exit(1). - P3-S4 (H-7): SafeOpenFile/SafeReadFile — платформенно-зависимое безопасное открытие файлов с build tags. Linux:
unix.Openat2сRESOLVE_BENEATH|RESOLVE_NO_SYMLINKS+O_NOFOLLOW. macOS/Unix:unix.OpenсO_NOFOLLOW. Windows: fallback черезos.Open.read_file.go,edit_file.go,grep.goпереведены наSafeOpenFile/SafeReadFile. - 23 новых теста:
password_policy_test.go(11),tokens_test.go(+5),safeopen_test.go(7).
Security
- Закрыто H-7 (security.md): TOCTOU/symlink при открытии файлов — устранён через safeopen.
- Закрыто L-2 (security.md): игнорирование ошибок
rand.Read— все вызовы теперь обрабатывают ошибки. - Закрыто L-4 (security.md): минимальная валидация паролей — расширяемая политика + HIBP.