Security

Built with security at every layer.

Cargo management data is operationally sensitive. RRMS is designed to keep it safe — from authentication through to storage and audit.

HTTPS everywhere

All traffic between your browser and the RRMS API is encrypted via TLS. The platform is served exclusively over HTTPS — unencrypted HTTP connections are rejected.

JWT authentication

Sessions use short-lived JWT access tokens (30-minute expiry, HS256) with 7-day hashed refresh tokens. Tokens carry issuer, audience, and not-before claims. Every refresh token is stored as an Argon2 hash — never in plain text.

Password hashing

User passwords are hashed with Argon2 (the OWASP-recommended algorithm) before storage. Plain-text passwords are never written to disk or logs.

Rate limiting

Login endpoints are rate-limited to 10 attempts per 5 minutes per IP. Token refresh is limited to 20 per 5 minutes. Brute-force attacks are automatically blocked.

Cloud infrastructure

The API and database are hosted on Render's managed cloud (United States). The database is a managed PostgreSQL instance — not accessible from the public internet. Render provides DDoS protection and automated backups.

Audit logging

All state-changing operations are written to an immutable audit log with user ID, action type, entity, timestamp, and request ID. Audit packs can be exported for regulatory review.

Security headers

The RRMS API sets the following security headers on every response:

X-Content-Type-Optionsnosniff
X-Frame-OptionsDENY
Strict-Transport-Securitymax-age=31536000; includeSubDomains
Content-Security-Policydefault-src 'self'
Referrer-Policystrict-origin-when-cross-origin

Responsible disclosure

If you believe you have found a security vulnerability in RRMS, please report it to us privately before disclosing it publicly. We will acknowledge your report within 48 hours and aim to resolve confirmed vulnerabilities within 30 days.

Report a vulnerability