Security & Compliance

Built so your registrar can sign off in one meeting.

EU hosting, GDPR-aligned controls, row-level tenant isolation, and a documented incident process. The boring parts done properly.

Six pillars

Each pillar maps to controls your IT or DPO will ask about.

EU data residency

Customer data is stored on EU infrastructure. Sub-processors are listed in the DPA and reviewed annually.

Encryption everywhere

TLS 1.2+ in transit. AES-256 at rest. Webcam evidence is stored in a private bucket and signed-URL only.

Row-level tenant isolation

Every table is protected by Postgres Row-Level Security. A university admin only ever sees their own institution's data — enforced at the database, not the app.

Least-privilege access

Roles: student, university_admin, super_admin. Server functions check role on every call. Anon and authenticated database roles have minimum surface.

Auditable proctoring

Every snapshot, flag, and admin action is logged with timestamp, actor, and rationale. Admins can export the full session evidence pack.

Hardened infrastructure

Edge-deployed application, managed Postgres, signed-URL storage, daily backups with point-in-time recovery.

Compliance posture

GDPR-aligned

Clear lawful basis (legitimate interest + consent for biometrics where applicable), data subject access workflow, 30-day evidence retention default.

Standard DPA

Signed Data Processing Agreement available before pilot. Lists sub-processors, retention, and data export commitments.

Right to erasure

Per-student deletion endpoint. Removes profile, evidence, and analytics within 30 days of request.

Breach notification

Customer notified within 72 hours of confirmed personal data breach, with scope and remediation plan.

We're not yet ISO 27001 certified. We follow the controls but don't claim the badge — happy to share our control mapping under NDA.

Application security

Password security

Have-I-Been-Pwned leaked-password protection enabled. Minimum 8 characters. Optional SSO via Google.

Session integrity

Short-lived JWTs, refresh rotation, exam sessions tied to a single browser+IP+camera token. SEB header verification on the live exam page.

Rate limiting

Demo requests: 3/min/email. Snapshots: 60/min/session. Flagged events: 120/min/session. Server-enforced via Postgres triggers.

Code review

All schema changes go through migration review. Security linter runs on every backend change.

Evidence lifecycle

The most sensitive data we hold is webcam evidence. Here's exactly what happens to it.

  1. Step 1

    During exam

    Snapshots and audio captured locally in the browser, uploaded over TLS to a private bucket. Only the student and authorised admins can read them.

  2. Step 2

    Review window

    Admins can replay the session, view flags, and export an evidence pack (zipped snapshots + event log + timeline).

  3. Step 3

    Retention

    Evidence auto-purges after the contracted retention period (default 30 days). Per-student deletion is available on request.

Found something?

We welcome responsible disclosure. Email security@examguard.app with steps to reproduce. We acknowledge within one business day, fix critical issues within 7 days, and credit the reporter unless asked otherwise.

No automated scanning of student-facing endpoints during exam windows, please.