Security
How this origin is configured
This page is about the website. An ECZ-ID does not make anything safe, secure or correct, and nothing here should be read as a statement about what a Passport identifies.
Response headers
What this origin sets on every response
- Content-Security-Policy
- default-src 'self', with scripts and styles limited to this origin plus the inline bootstrap Next.js requires. 'unsafe-eval' is absent. Images may come from this origin and from the ECZ-ID badge API, named as an exact origin and never as a wildcard. connect-src is 'self'.
- Strict-Transport-Security
- Two years, subdomains included, and deliberately NOT preload: submitting a domain to the preload list is slow to reverse and is an explicit decision for the operator, not a side effect of a config file.
- X-Frame-Options and frame-ancestors
- DENY and 'none'. Nothing on this property should ever be framed by another site.
- Referrer-Policy
- strict-origin-when-cross-origin, so a link leaving this site carries the origin and never the path.
- Permissions-Policy
- Camera, microphone, geolocation, payment and USB are all disabled. This site needs none of them.
- X-Content-Type-Options
- nosniff.
Build-time
A production build refuses a handoff that goes nowhere
The allowlist is enumerated
Every estate destination is checked against a named list of hosts rather than a wildcard on the domain. A wildcard would admit any subdomain someone managed to stand up, and a control pointing at an unexpected host is indistinguishable from a hijacked one.
Availability cannot half-apply
The one configuration value that opens or pauses a family’s door is parsed strictly. A malformed value fails the production build outright rather than applying some of its entries, because a half-applied change to acquisition is harder to reason about than no change at all.
The useful part
This site holds no identity truth
Identity state lives on the Resolver and is read-only to the world. Acquisition, payment and entitlement live in TrustOps. Compromising this origin would let someone change what these pages say. It would not let them change, issue, revoke or read a single ECZ-ID.
That is a deliberate property of the architecture rather than a happy accident, and it is why this page is short.
Report anything you find to hello@ecocitizenz.com. Tell us what you did and what you saw; we will come back to you.
