KamoCRM

Sign-in hygiene - no secrets in logs, a reset ends every session, /register rate limit (ID0.4)

FixSecurityService
Shipped
November 15, 2026 at 1:03 AM UTC
Author
Kamo
Commit
4af5a37

- Login no longer dumps every request header (cookies included) at DEBUG. *** ids, one-time keys and their Redis keys are logged only as a one-way 8-hex fingerprint (KSessionService.fingerprint); password lengths and password-hash prefixes are no longer logged. - A password reset (recovery, the set-password link) and a password set by a god-eligible caller end EVERY session of the user through the ***UIDX index and revoke every KamoMobile device token. A member's own change keeps the session it was made from and signs out everywhere else; the phone stays paired. Runs after commit and never throws (PasswordChangeSessionRevoker). - POST /register: per public IP (40/h) and per submitted email (5/h) limits in Redis, 429 + Retry-After, logged as REGISTRATION_REJECTED; fails open on a Redis error, logged with the throwable. - EXTERNAL_AUTH_PROVIDERS client secrets: already unreadable (entity @JsonIgnore, Organization collection @JsonIgnore, /providers returns ids only) - now pinned by a test. - The registration code's 5-wrong-tries rule was already on main (2026-09-17); unchanged.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing