Addressing security issues: critical and not so critical (more fixed will be pushed soon)
Why
The app needs to be secure and safe.
Mood
## What
- Addressing security issues: critical and not so critical (more fixed will be pushed soon)
## Why
- The app needs to be secure and safe.
## Mood
<img width="200" src="https://media2.giphy.com/media/CSpfd57m9WGHnxMWXm/100.webp?cid=36b14facw100seggylsefdj0ap2oopoux3bn3jn6qu59xggq&ep=v1_gifs_search&rid=100.webp&ct=g"/>
- CR-7: replace deterministic UUID v5 (SHA-1 of email) with
UUID.randomUUID() for email confirmation tokens — prevents offline
token computation from a known email address
- CR-10: disable source maps in production Vite build
- H-1: reduce JWT lifetime from 7 days to 30 minutes; add 25-minute
periodic refresh interval in AuthProvider to keep active sessions alive
- H-2/H-6: require currentPassword verification before allowing email
or password changes in patchUserInfo
- H-5: fix brute force protection anchor point — compare oldest of the
3 failed attempts against now() instead of the most recent attempt
- H-10: add @Size constraints to NoteRequest, NotePatchRequest,
TaskRequest, TaskPatchRequest; add migration restoring CHECK constraint
on notes.description (max 5000 chars)
- M-2: catch JwtException supertype instead of only MalformedJwtException
so expired/invalid tokens return empty instead of throwing 500
- M-3: change anyRequest().permitAll() to denyAll() in SecurityConfig so
future endpoints are denied by default
- M-8: increase BCrypt cost factor from 10 to 12 per OWASP recommendation
- M-14/M-15: set include-message: never and log level INFO for all profiles
Deferred to separate PR: CR-8 (JWT HttpOnly cookie) — requires
coordinated CORS/cookie-domain config decision for the production domain
topology and coordinated backend + frontend changes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
Why
Mood