Security controls in Hireship are intentional and auditable. This page summarises what we encrypt, who can access what, and how we handle your resume.
Passwords are hashed with Argon2id. Plain-text passwords are never stored, logged, or transmitted after hashing. HIBP k-anonymity check is performed at signup to reject breached passwords.
Sessions are backed by Postgres. Cookies are HttpOnly, SameSite=Lax, and Secure in production. Session IDs are never logged.
Resume files and parsed text are encrypted at rest using AES-256-GCM with a unique nonce per file. The encryption key is held in a server environment variable; raw file bytes are never written to the database. Downloads require an authenticated session — no signed URL scheme exposes your resume without auth.
Discord and Slack webhook URLs are encrypted with AES-256-GCM before storage. The plaintext URL is decrypted only at delivery time and is never logged.
Every user-scoped query carries a user_id parameter enforced at the data-access layer. A CI check fails the build if any user-scoped query function lacks this parameter. One user cannot read another user's scores, resumes, channels, or applications.
Stripe webhook deliveries are verified with HMAC-SHA256 before any payload is parsed. Replayed events are idempotent — no double-charges result from retries.
See /.well-known/security.txt for our disclosure policy and contact information.