ZI² Discover

Security

Last updated: 2026-06-07. Effective: 2026-06-07.

This page describes how ZI² Discover protects your data and the data of the sites you scan. We treat security as a product feature, not an afterthought. If you find a vulnerability, please report it to [email protected].

Shared responsibility

Security is a shared responsibility. ZI² secures the platform: infrastructure, the application, encryption, multi-tenancy, sub-processors, and our staff. You secure your account: keep your password strong and unique, enable MFA when available, manage workspace membership, only verify domains you control, and configure fix-applier authority levels you are comfortable with.

Infrastructure

The Service runs on a dedicated bare-metal server (Server B) located in a Tier III data center in Germany. The host operating system is CloudLinux with the Plesk control plane hardened against default credentials, default ports, and unused services.

TLS everywhere

All inbound traffic to discover.zi2.app, the API, and the dashboard is served over TLS 1.3 with modern cipher suites. Certificates are issued by Let's Encrypt and auto-renewed. HSTS is enabled with a one-year max-age and includeSubDomains. Plain-HTTP requests are redirected to HTTPS.

Data at rest

Data in transit

Every internal hop between processes uses TLS or a local-loopback socket within the same host. Database connections from the API to Postgres require TLS. Outbound calls to AI engines (Anthropic, OpenAI, Google, Microsoft, Perplexity) and payment processors (Stripe, Paystack, Flutterwave) use HTTPS with certificate pinning where the provider's library supports it.

Authentication

Identity is handled by ZI² Digital ID, our identity service. Sessions are short-lived JWTs signed with EdDSA keys rotated every 90 days. Refresh tokens are stored hashed; revocation is immediate. Email-and-password login uses bcrypt, with throttled attempts and progressive delay on failure. Magic-link sign-in is available; SSO (SAML 2.0 and OIDC) is on the roadmap for Enterprise.

Authorization and multi-tenancy

Multi-tenancy is enforced at the database layer, not the application layer:

Crawler safety

The scanner is the most powerful and the most dangerous part of the Service. We treat third-party sites as adversarial:

LLM prompt-injection defense

AI agents in the Service consume signals from your sites; agents are well-known targets for prompt injection through crafted content. Our defenses:

Audit logging

Every state-changing event — auth, billing, site verification, scan start, fix apply, role change, sub-processor change — writes to an append-only audit_log table partitioned by month. Records are retained for 7 years. Enterprise customers can export their tenant's audit log on request and via API.

Backups and disaster recovery

Incident response

We classify incidents on a four-tier severity scale:

Every SEV-1 and SEV-2 incident gets a written post-mortem with root cause, contributing factors, and corrective actions, published to status.zi2.app within 10 business days.

Responsible disclosure

We welcome security research conducted under a responsible disclosure agreement. Report findings to [email protected]. We will acknowledge within 2 business days and aim to triage within 5. Do not run automated scanners against production without prior coordination; do not access data that is not your own; do not degrade service for other customers. Researchers acting in good faith under these guidelines will not face legal action from ZI².

Secrets management

Application secrets — database passwords, sub-processor API keys, signing keys, Kyber private keys — live outside the application code and outside the repository. Production secrets are held in a dedicated secrets store on Server B, mounted into application processes by systemd unit drop-ins or container init. Secrets are never logged. Where a secret must be displayed in the dashboard (for example, a freshly issued API key), it is shown once at creation and then only ever stored as a hash.

Sub-processor keys held on behalf of Enterprise customers — for example, a customer-supplied Anthropic API key used for higher rate-limit AI probes — are wrapped using ZI² Hybrid before storage and are unwrapped only at request time.

Software supply chain

People and access

Data deletion on request

You can request deletion of your Customer Data at any time from the dashboard or by emailing [email protected]. Confirmed deletion requests are propagated within 30 days across the primary database, MinIO, search indexes, and cache layers. The audit-log record of the deletion request itself is retained for the legal periods stated in the Privacy Policy.

Compliance

Contact

Vulnerability reports: [email protected].
Privacy and DSAR: [email protected].
General: [email protected].

See also: Terms · Privacy · Acceptable Use · DMCA · Cookies