Security
How RowMint protects your files and data.
Client-side by default
Most tools never send your file anywhere — processing happens entirely in your browser's memory.
File validation
Any file that is uploaded is checked by its actual content (magic bytes), not just its file extension, before being accepted.
No public file storage
Files stored in R2 for account features are private by default. Download links are short-lived, HMAC-signed tokens — never permanent public URLs — and a file can only be deleted by the account that owns it (or by an anonymous uploader's own one-time delete link).
Data isolation
A signed-in user can only ever see, download, or delete their own files and history — enforced on every request, never another user's.
Role-based admin access
The admin console is scoped by role: each of the seven roles (super_admin, admin, support, analyst, content_manager, security_viewer, user) can only see the sections it's granted, and a plain admin can never modify a super_admin's role.
Session security
Sessions use HttpOnly, Secure, SameSite cookies with server-side opaque tokens — never a client-readable JWT with embedded claims.
Passwords
Passwords are hashed with PBKDF2-SHA256 and a per-user random salt; the plain password is never stored or logged.
Browser-level protections
The site sends a Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, and HSTS on every response.
Rate limiting
Registration, login, contact, file upload, and the Formula Assistant are all rate-limited per IP to reduce abuse.
Secrets management
API tokens and secrets are stored using Cloudflare's secret manager and environment variables, never committed to source control.
Responsible disclosure
If you believe you've found a security issue, please reach out through the contact page.