Security & Compliance

Enterprise-Grade Security
for Legal Data

Your clients trust you with their most sensitive information. We make sure that trust is never broken — with multiple layers of security built specifically for legal practices.

11
Security Layers
AES-256
Encryption Standard
7yr
Audit Log Retention
100%
Actions Logged
Protection Features

Every angle covered.

From the moment an attorney logs in to the last document download, every interaction is protected by layered security controls.

Active
🔐

Multi-Factor Authentication

TOTP-based MFA (RFC 6238) compatible with Google Authenticator, Authy, and any standard authenticator app. Required on every login — no exceptions. Trusted device support with 7-day sessions for reduced friction.

Active
⏱️

Session Security

30-minute inactivity timeout with a 1-minute warning banner before expiry. Sessions are database-tracked (not just cookies), so logout is instant and complete. New logins automatically invalidate all prior sessions across all devices.

Active
🛡️

Brute Force Protection

5 failed login attempts triggers a 15-minute account lockout. CAPTCHA signal activates after 3 failed attempts. Rate limiting (10 requests/min) applied to all authentication endpoints including login, MFA, and password reset.

Active
🔒

bcrypt Password Hashing

Passwords are never stored in plaintext. AccidentOS uses bcrypt with salt rounds for one-way hashing — the industry standard. Even if the database were compromised, passwords remain unrecoverable.

Active
📋

Full Audit Trail

Every meaningful action is logged: case access, AI feature usage, credit transactions, document activity, login attempts (successful and failed), and admin actions. Logs are append-only and immutable via database rules — nothing gets deleted.

Active
👥

Role-Based Access Control

Strict separation between attorney, admin, and read-only roles. Each role has defined permissions that cannot be escalated without explicit admin action. Admin panels require a separate, hardened 2-step authentication flow.

Active
🏛️

Data Isolation

Attorneys can only access their own cases, clients, and data. Row-level access controls are enforced at the database layer — not just the application layer — so there's no path to cross-account data access.

Active

API Hardening

Per-account rate limiting on all API endpoints. Input sanitization via XSS prevention libraries on every field. CORS enforced with a strict origin allowlist. Request body size limited to 15MB to prevent abuse.

Active
🌐

Security Headers

All responses include: HSTS (force HTTPS), X-Frame-Options (prevent clickjacking), X-Content-Type-Options (prevent MIME sniffing), and Content Security Policy. Managed via Helmet.js with legal-app-appropriate configuration.

Active
🔗

Webhook Authentication

All webhook integrations are secured with HMAC-SHA256 signed API keys. Unsigned or incorrectly signed requests are rejected before processing. Each integration has its own key that can be rotated independently.

Active
🛡️

AES-256-GCM Token Encryption

All OAuth tokens and sensitive integration credentials are encrypted at rest using AES-256-GCM — the same encryption standard used by the US government and financial institutions. Keys are environment-isolated and never stored with data.


Defense in depth.

Security isn't a single feature — it's layered controls that fail safely. If one layer is compromised, the others hold.

  • Credentials never stored in plaintext

    Passwords use bcrypt. OAuth tokens use AES-256-GCM. Keys live in environment variables, never in the database.

  • Every request is authenticated and scoped

    JWTs on every API call. Row-level isolation at the database. No attorney can query outside their own data — enforced in SQL, not just app logic.

  • Sessions expire and invalidate cleanly

    Database-tracked sessions mean logout is real. Stolen tokens from expired sessions are worthless. Inactivity timeouts protect unattended workstations.

  • Attacks are detected and blocked early

    Rate limiting and lockouts stop brute force. Input sanitization stops injection attacks. CORS + CSP stop cross-origin exploits.

  • Everything is auditable and explainable

    Full audit trail for every action. Immutable logs stored for 7 years. Attorneys can prove exactly who accessed what, when, and from where.

Encryption Specifications

Technical details for your compliance team, IT department, or security-conscious clients.

Token Encryption AES-256-GCM
Password Hashing bcrypt + salt
TOTP Standard RFC 6238
Session IDs 32-byte random
Webhook Signing HMAC-SHA256
Transport Security TLS 1.2+ (HSTS)
Auth Tokens JWT (7-day)
Session Timeout 30 min inactivity
Login Lockout 5 attempts / 15 min
Audit Retention 7 years

Nothing goes unrecorded.

Every meaningful action in AccidentOS is captured in the audit log — automatically, without any configuration.

🔑

Login Activity

Successful logins, failed attempts, MFA verifications, and session terminations — all with timestamp and IP address.

📁

Case Access

Every time a case record is opened, modified, or exported. Who accessed it, when, and what changed.

🤖

AI Feature Usage

All AI-powered actions — lead scoring, document analysis, auto-responses — are logged with inputs and outputs for review.

💳

Credit Transactions

Every credit purchase, spend, and transfer is recorded with full context. Complete financial audit trail.

📄

Document Activity

Document uploads, downloads, and deletions — all tracked. Know exactly when a document was accessed and by whom.

⚙️

Admin Actions

All admin panel activity — user management, configuration changes, report generation — is captured in a separate admin audit log.

7

Years of Audit Log Retention

Logs are stored for a minimum of 7 years — meeting or exceeding most state bar association record-keeping requirements for legal practices. Logs are append-only and immutable via database-level rules.

Security your clients can understand.

Send this page to any client who asks about data security. Every protection on this page is live and active in your AccidentOS account today.