Trust Centre

Last reviewed 3 August 2026

Security & privacy at Spey Register

You're trusting us with records that matter. This is our single, plainly-worded reference for the security and privacy controls we operate today — how your data is encrypted, how the application defends itself, and the providers we build on.

TLS 1.2+Encrypted at restRow-Level Security2FA availableCSP nonceHSTS preloadUK-hostedDaily backups

Category 01

Data protection & encryption

Records are protected both while they travel to us and while they sit at rest, with access decisions enforced all the way down at the database layer.

In place
Encrypted in transit with modern TLS

Every connection to Spey Register is served exclusively over HTTPS. Each connection opens with a TLS handshake that authenticates our server against its certificate and negotiates fresh, ephemeral keys; from that point on, every request and response is protected with authenticated encryption, so a network observer can neither read nor tamper with the payload undetected. We support TLS 1.2 or higher, and certificates are provisioned and rotated automatically by our hosting and CDN provider — removing the risk of an expired or mis-configured certificate slipping through.

In place
HTTP Strict Transport Security (HSTS), with preload

On top of TLS we send an HTTP Strict Transport Security header: max-age=31536000; includeSubDomains; preload. Read literally: max-age tells the browser to treat the origin as HTTPS-only for a full year, includeSubDomains extends that guarantee to every subdomain, and preload makes the domain eligible for the browser-maintained preload list — so a conforming browser refuses plaintext even on the very first visit, before it has ever seen our header. Together these close the trust-on-first-use gap and neutralise SSL-stripping downgrade attacks that depend on an initial, unencrypted http:// request.

In place
Encrypted at rest

Data stored in our managed Postgres database is encrypted at rest by the database provider. If the underlying storage media were ever accessed directly, the contents would remain unreadable without the provider-managed keys.

In place
Row-Level Security on every database table

Row-Level Security (RLS) is enabled on every single table, with a deny-by-default posture: unless a policy explicitly grants access to a given row, that row is invisible. Crucially, these policies are evaluated by PostgreSQL itself — per row and per query — a second, independent enforcement point beneath the application. So even if an application code path were wrong, the database simply will not return rows the current context is not entitled to. That is defence-in-depth applied literally: two independent gates, not one.

In place
Data stored in the UK

Application data is stored in the UK: the managed database runs in the London region (eu-west-2). Data at rest stays within that jurisdiction.

Category 02

Authentication & access control

Accounts are guarded by industry-standard authentication, and every operation on your data is authorised on the server against the person actually signed in.

In place
Passwords stored only as salted hashes

Passwords are never stored in plain text. They are held only as securely salted hashes through Supabase Auth, meaning the original password cannot be recovered from what we store — not by us, and not by anyone who might improperly obtain the data.

In place
Email confirmation required before access

New accounts must confirm ownership of their email address before they can access the platform, which prevents sign-ups against addresses the registrant does not control.

In place
Protection against known-breached passwords

When a password is set, it is checked against known-breached credential datasets. Passwords that have appeared in public breaches are rejected, steering users away from credentials that attackers already know to try.

In place
Two-factor authentication available

Two-factor authentication using TOTP authenticator apps is available to add a second factor on top of a password. When enabled, signing in requires a one-time code from the authenticator, so a leaked password alone is not enough to reach an account.

In place
Hardened, httpOnly session cookies

After you sign in, your session is carried by a signed token kept in an httpOnly cookie — it cannot be read by page JavaScript, which limits what a cross-site-scripting bug could reach. The cookie is marked Secure, so it is only ever sent over HTTPS, and SameSite, which reduces cross-site request-forgery exposure. The token is verified on the server on every request.

In place
Role-based access, authorised server-side

Access follows role-based permissions, and — critically — every data operation is authorised on the server against the signed-in user, including explicit ownership checks. The client is never trusted to decide what it may see or change; the server independently confirms that the requesting account is entitled to each record it touches.

Category 03

Application security

Defence-in-depth is written into how the application is built — from how input is validated to how the browser is instructed to run our pages and how uploaded files are served.

In place
Input validated on both client and server

All input is validated against a single shared schema that runs on both the client and the server. The same rules that give you fast, friendly feedback in the browser are re-enforced on the server, where they actually count — so malformed or malicious input cannot bypass validation by skipping the front end.

In place
Content-Security-Policy with a per-request nonce

Each response carries a Content-Security-Policy built around a fresh, per-request nonce: only scripts tagged with that exact, unpredictable value are allowed to run, so injected inline script — the payload of a classic cross-site-scripting attack — has no way to guess the nonce and the browser refuses to execute it. We also send X-Content-Type-Options: nosniff to stop the browser from MIME-sniffing a response into an executable type, alongside the other standard security headers including HSTS.

In place
Uploaded files kept private, served via signed links

Uploaded files are held in private storage — never in a public bucket. They are delivered only through short-lived signed URLs that expire, and both file type and size limits are enforced on the server. There is no persistent public link to a document, so access ends when the signed link does.

In place
Rate limiting on sensitive endpoints

Sensitive endpoints are rate-limited to blunt automated abuse such as credential-stuffing and brute-force attempts, reducing how quickly an attacker can probe the platform.

Category 04

Operations & accountability

We build on established managed providers, review our own work on a regular cadence, and keep an audit trail on the actions that carry legal weight.

In place
Periodic internal security reviews

We carry out internal security reviews of the application on a roughly monthly cadence, revisiting our controls and configuration rather than treating security as a one-time setup.

In place
Audit trail on key legal actions

Actions that carry legal weight — such as accepting our Terms & Conditions — are recorded with an audit trail capturing the timestamp, the originating IP address, and the device/user-agent. This gives a durable, reviewable record of when a material action was taken and from where.

In place
Built on established managed infrastructure

The platform runs on established managed cloud providers rather than self-managed servers, inheriting their operational maturity for the database, hosting, and delivery layers. The specific providers we rely on are listed in the Subprocessors section below.

In place
Automated daily backups

The managed database is backed up automatically every day, with a rolling seven-day retention window, so recent data can be restored in the event of an incident.

Infrastructure

Key subprocessors

We build on established managed providers rather than running our own servers. These are the key third parties that may process data on our behalf in the course of running the platform. Each is engaged for a specific, limited purpose.

  • SupabaseManaged Postgres database, authentication, and file storage
  • VercelApplication hosting and global content delivery (CDN)
  • OpenAIAI-assisted features, where enabled
  • ResendTransactional email delivery
  • CloudflareBot protection (Turnstile) on public-facing forms
  • PostHogProduct analytics, enabled only with cookie consent
  • Tawk.toLive chat support
  • UpstashRate limiting (managed Redis)

This list reflects our key subprocessors as of 3 August 2026 and may not be exhaustive. Several of these providers run on underlying cloud infrastructure such as AWS; their own subprocessor lists are published on their respective trust pages. Details of how personal data is handled are set out in our Privacy Policy.

Privacy

Data & privacy

We collect and process personal data in order to provide the service. What we collect, why we collect it, how long we keep it, and the rights available to you are described in full in our Privacy Policy and Terms of Use — those documents are the authoritative source, and this page defers to them on all privacy specifics rather than restating them.

We ask for your consent before setting non-essential cookies, and you can review or change your cookie preferences at any time via the link in the footer below.

Good to know

Frequently asked questions

Disclaimer

As of 3 August 2026, the information on this page reflects Spey Register's security and privacy practices and is provided in good faith, to the best of our knowledge. It is a summary for informational purposes only — it is not a certification, warranty, or contractual commitment, and our practices may change over time. Where a control is described as “available”, it may be optional and not enabled for every account. Nothing here creates any obligation beyond what is set out in our Terms of Use.