security & trust

Your data. Locked down.

AstraStaff AI treats your candidate pipeline and payment methods as the crown jewels. Here is exactly what protects them.

Server-side PII masking

Candidate names, emails, and phone numbers are replaced with ████ placeholders on the server before any response leaves our infrastructure. Raw PII is never sent to your browser for candidates you have not paid to unlock. This is provable: the /api/admin/masking-proof endpoint shows the raw record on the server vs. what shipped over the wire.

Session security

Sessions use HttpOnly, Secure, SameSite=Lax cookies signed with HS256 JWTs. Every user has a token_version counter that is incremented on password change and 2FA recovery — old sessions are killed instantly across every device.

Two-factor authentication

TOTP-based 2FA (compatible with Google Authenticator, Authy, 1Password) is available on every account. Ten single-use backup codes are hashed with SHA-256 at rest. Emergency email recovery is rate-limited to 5 attempts per hour per IP.

Multi-tenant isolation

Every candidate, charge, and job is stored with a strict organization_id filter. Cross-tenant queries are blocked at the API layer. All privileged endpoints verify the JWT-embedded org matches the resource’s owner.

Payments (Stripe)

Card data never touches our servers. Stripe Elements collects card details client-side and returns only a PaymentMethod ID (pm_…). All charges use off-session Stripe PaymentIntents. Stripe is PCI-DSS Level 1 certified.

Rate limiting & abuse controls

Public endpoints (auth, signup, password reset, 2FA verify, recovery) are rate-limited by IP with sliding windows. Bcrypt with 10 rounds is used for password hashing. TOTP verification allows ±30s clock drift.

Compliance

Reporting a vulnerability

Found a security issue? Please responsibly disclose to security@astrastaffai.co. We respond within 24 hours and never take legal action against good-faith researchers.