Security/critical fixes #4

Merged
rmcampos merged 4 commits from security/critical-fixes into main 2026-06-29 19:23:42 +00:00
Owner

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

## 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"/>
rmcampos added 2 commits 2026-06-29 17:42:03 +00:00
security: fix short-term priority vulnerabilities
Pull Request CI-Backend / Checks (pull_request) Failing after 1m34s
Pull Request CI-Backend / Build & Push (pull_request) Has been skipped
Pull Request CI-Frontend / Checks (pull_request) Successful in 3m13s
staging/deploy PR #4 staging ready
Pull Request CI-Frontend / Build & Push (pull_request) Successful in 2m1s
231dd7ed1a
- 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>
rmcampos added 1 commit 2026-06-29 18:19:32 +00:00
test: fix test cases
Pull Request CI-Frontend / Checks (pull_request) Successful in 3m16s
Pull Request CI-Frontend / Build & Push (pull_request) Successful in 1m2s
Pull Request CI-Backend / Checks (pull_request) Successful in 5m49s
staging/deploy PR #4 staging ready
Pull Request CI-Backend / Build & Push (pull_request) Successful in 5m11s
ee39021ea8
rmcampos added 1 commit 2026-06-29 18:44:02 +00:00
chore: use 50000 instead of 5000 for data constraint
Pull Request CI-Backend / Checks (pull_request) Successful in 49s
Pull Request CI-Frontend / Checks (pull_request) Successful in 2m48s
Pull Request CI-Frontend / Build & Push (pull_request) Successful in 51s
staging/deploy PR #4 staging ready
Pull Request CI-Backend / Build & Push (pull_request) Successful in 3m53s
fedbf30b2e
rmcampos merged commit 169f07801a into main 2026-06-29 19:23:42 +00:00
rmcampos deleted branch security/critical-fixes 2026-06-29 19:23:42 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rmcampos/tasknote#4