Security Overview
CisoDeck is built for cybersecurity consultants. We hold ourselves to the same standards you advise your clients on.
Last updated: June 1, 2026
Tenant isolation
Every account is completely isolated at the database level using PostgreSQL Row Level Security (RLS).
- User A can never read, write, update, or delete User B’s data
- All queries are automatically filtered by account membership
- Isolation is enforced by the database engine, not application code alone
- Automated cross-tenant attack tests verify isolation on every release
Authentication & access
- Secure password hashing with bcrypt
- HTTP-only, secure session cookies
- PKCE flow for authentication code exchange
- Automatic session refresh on every request
- Role-based permissions: owner, admin, and member
- Service role key never exposed to browser
Encryption
- In transit: All connections use TLS 1.2+ encryption
- At rest: Database and storage encrypted at rest (managed by Supabase/AWS)
- Passwords: Hashed with bcrypt, never stored in plaintext
Storage & reports
- All storage buckets (logos, PDFs) are private — no public URLs
- File access requires signed URLs with short expiry (5 min for PDFs, 1 hr for logos)
- Storage paths are account-scoped and enforced by RLS
- Generated reports are immutable snapshots — cannot be updated or deleted
- Report PDFs use insert-only storage policies
Audit & accountability
- All significant actions are logged (client creation, assessments, reports, etc.)
- Audit logs are append-only — cannot be updated or deleted
- Logs are account-scoped — each account sees only its own logs
- Sensitive data is stripped from log metadata
Architecture & validation
- Server-rendered Next.js — no raw database credentials in the browser
- All inputs validated server-side (types, ranges, enums, lengths)
- Account ID derived server-side, never accepted from client
- Parent-child integrity verified before cross-table operations
- File uploads validated for MIME type and size on client and server
Data residency & compliance
Application data (database and file storage) is hosted in the EU (Frankfurt, eu-central-1) region via Supabase. Application hosting on Vercel uses edge locations closest to the user, with server-side rendering processed in the EU. No data is replicated outside the EU unless explicitly requested.
Sub-processors
| Provider | Purpose | Data processed | Compliance |
|---|---|---|---|
| Supabase | Database, auth, file storage | All application data | SOC 2 Type II |
| Vercel | Application hosting | Request/response data | SOC 2 Type II |
| Stripe | Payment processing | Billing data only (no client data) | PCI DSS Level 1 |
We do not use third-party analytics, tracking, or advertising services. No client data is shared with payment processors.
Vulnerability reporting
If you discover a security vulnerability, please report it responsibly to [email protected]. We will acknowledge receipt within 24 hours and aim to resolve critical issues within 72 hours.
For general security questions: [email protected]
Important: CisoDeck helps you assess, track, and report. It does not certify clients as compliant or secure, and it does not replace professional judgement.
Looking for a page to share with your clients? See Security Information for Your Clients.