Last Updated: May 24, 2026
Your fitness and health data is sensitive. This page describes the security measures we have implemented to protect your account — so you can make an informed decision about trusting us with your data.
Passwords are hashed with Argon2id before being stored. Argon2id is the winner of the Password Hashing Competition and the current industry recommendation — it is deliberately slow and memory-hard to resist brute-force and GPU-based attacks. Your plaintext password is never stored or logged anywhere.
Sessions use cryptographically secure tokens validated against the database on every request. Sessions can be invalidated server-side immediately — signing out takes effect instantly.
Session cookies are set with the strongest available browser security attributes: HttpOnly (not accessible to JavaScript), Secure (HTTPS only), and SameSite=Strict (never sent on cross-site requests). In production, the cookie also uses the __Host- prefix, which prevents subdomain injection attacks.
Password reset tokens are cryptographically random, stored only as a one-way hash in the database, and short-lived. Tokens are single-use. Reset responses are identical whether an account exists or not.
Every response in production includes a strict set of security headers:
All mutating requests are protected by multiple independent layers of CSRF defense at both the server and browser level.
Rate limiting is enforced on all endpoints. Authentication-related endpoints — sign-in, sign-up, password reset, and email verification — have significantly tighter per-IP limits to defend against credential stuffing and abuse.
All API endpoints require authentication. Every query is scoped to the authenticated user — there is no way to access another user's data. Each user can only read and write their own records.
If you discover a security vulnerability in Runima, please report it through our contact form. We will respond promptly and keep you informed. We do not pursue legal action against good-faith security researchers.