Security

Our website and email, checked live.

Every check on this page runs when you open it. Each one says what it means in plain terms, with the technical detail underneath if you want to verify it yourself.

Not checked yet

01 · Your messages

What happens to what you send through our form.

Contact form messages are end-to-end encrypted

Encrypted in your browser, to our key, before they’re sent. Only our private key can decrypt them.

Technical detail on form encryption

The form encrypts your message with OpenPGP, in your browser, to our public key, so our hosting and email delivery providers only ever handle it as encrypted text. Our server also refuses messages that aren’t in that format.

The page where you type loads code only from our own domain: the form’s bot check runs in a separate, isolated frame that your browser keeps from reading the page.

Our key’s fingerprint is 0095 85A5 FD39 28B6 9044 3D43 0A89 84A5 185F 2749. Download the public key and compare it in any OpenPGP tool.

To watch it work, open your browser’s developer tools on the Network tab and send the contact form on our homepage: your message is sent only as an encrypted block. To confirm this live, this page also sends our server short test requests. Our server refuses them on purpose, so they show as errors. They carry nothing you typed.

Not checked

02 · Your connection

How your browser talks to this site.

Your connection to us is encrypted

HTTPS only, using TLS 1.2 or newer.

Technical detail on connection encryption

Plain HTTP redirects to HTTPS, and TLS 1.0 and 1.1 connections are refused. The value shows the version your own connection is using. Your browser’s developer tools show it too, and so does this command in a terminal that has curl and grep:

curl -svo /dev/null https://xovv.io 2>&1 | grep "SSL connection"
Not checked

Strict browser security rules

Your browser is told to run only our own scripts on this page, and to reach us only over HTTPS.

Technical detail on browser security rules

In content-security-policy, script-src allows only 'self', with no inline code, and require-trusted-types-for 'script' turns on Trusted Types, which blocks a common way of injecting code into a page in browsers that support it. The contact form’s bot check is allowed only as a frame from check.xovv.io. strict-transport-security has a max-age of one year (31536000 seconds), and browsers also have xovv.io on their built-in HTTPS-only list. Our pages send these headers; the bot check’s frame has its own, narrower policy. To see them:

curl -sI https://xovv.io
Not checked

03 · Our email and domain

How we make our name harder to fake.

Our email domain has a strict anti-spoofing policy

Mail faking an xovv.io sender address is set to be rejected.

Technical detail on the email anti-spoofing policy

Our DMARC policy is p=reject at full strength, and our subdomains inherit it. Each receiving mail server decides how to apply it. Look it up with any DMARC lookup tool, or from a terminal that has dig:

dig +short TXT _dmarc.xovv.io
Not checked

Our domain’s DNS is cryptographically signed

Resolvers that check signatures will reject forged answers for xovv.io.

Technical detail on DNS signing

Enter xovv.io in any DNSSEC analyzer to see the full chain of signatures. From a terminal that has dig, this lookup should show the ad (authenticated data) flag:

dig +dnssec xovv.io @1.1.1.1

If your network redirects DNS lookups, the flag may not appear. This asks the same resolver over HTTPS and should show "AD":true:

curl -s -H "accept: application/dns-json" "https://1.1.1.1/dns-query?name=xovv.io"
Not checked

04 · Your privacy

What this site loads, and from where.

No ad trackers or analytics scripts

Our site’s files, fonts included, come from our own domain. The contact form’s bot check runs in a separate, isolated frame.

Technical detail on trackers

Our content policy lets your browser load files only from this site. The contact form’s bot check is allowed only as a frame from our check.xovv.io subdomain; our hosting provider’s check runs inside that frame, which loads only after you start the form on our homepage and can’t read the rest of the page. This page carries none of our hosting provider’s analytics code. Like any website, ours is delivered by a hosting provider that receives basic technical details, such as your IP address, to serve pages. Our privacy page has the details.

To see for yourself, open your browser’s developer tools, choose the Network tab, and reload. Apart from anything your browser extensions add, every request this page makes goes to xovv.io, including the refused test requests described above.

Not checked

What these checks cover

This website, our domain, and your connection to it. They don’t measure the systems we manage for clients. Ask us how we monitor and protect those.

Book a consult

Found a security issue?

Please tell us through the contact form, with enough detail for us to reproduce it. Your report is encrypted like every other message.

Contact us