Back to results

Digital exposure report

mozilla.org

Good shape, with a few gaps worth closing this quarter.

Scanned: 2026-11-15 19:22 UTC

Full coverage: every applicable check was assessed.

B
86/100

What to do first

  1. 1.

    Turn on DNS signing for your domain

    Signing helps resolvers detect forged answers about your domain.

    Who can fix it: Your domain registrar or DNS provider

    How to verify after the fix

    dig +short DS mozilla.org
  2. 2.

    Limit what scripts your pages are allowed to run

    This adds one layer of protection against injected scripts.

    Who can fix it: Your website developer or web host

    How to verify after the fix

    curl -sIL https://mozilla.org/ | grep -i "Content-Security-Policy"

A starting point, not a security guarantee.

What this grade means

Tested hostname
mozilla.org
Website request
GET https://mozilla.org/ → https://www.mozilla.org/
Scan time
2026-11-15 19:22:34 UTC
Grading method
Version 2How grading works
Unverified or excluded checks
None. Every applicable check was assessed.

This is a snapshot of the public configuration checks listed in this report. It does not verify the site's owner, business legitimacy, application security, or absence of vulnerabilities. It is not a security certification.

Score by category

Email security29/30Spoofing email from this domain is hard.
Encryption & certificate25/25Traffic to the site is encrypted and the certificate is valid.
Browser protections24/30The site instructs browsers to block common attacks.
DNS infrastructure8/15The domain's infrastructure works, but recommended hardening is missing.

Fix priorities

  1. 1.MediumDNSSEC — signed DNS records · Hardening gap+7
  2. 2.LowPermissions-Policy · Hardening gap+2
  3. 3.LowCSP — protection from script injection · Hardening gap+3

Findings

SPF — who may send mail for the domain

Passed · Severity: OK · 9/10

An authorized sender list is defined; mail from other servers is flagged as suspicious.

~all (softfail) — acceptable when combined with enforced DMARC. 4 of 10 DNS lookups.

Source data: DNS TXT mozilla.org
v=spf1 include:%{i}._ip.%{h}._ehlo.%{d}._spf.vali.email include:_spf.mozilla.com include:_spf.google.com include:spf.fundraiseup.com ~all
$ dig +short TXT mozilla.org
Documentation: RFC 7208 — SPF (https://www.rfc-editor.org/rfc/rfc7208) · M3AAWG — Email Authentication Best Practices (https://www.m3aawg.org/sites/default/files/m3aawg-email-authentication-recommended-best-practices-09-2020.pdf)

DMARC — anti-spoofing policy

Passed · Severity: OK · 15/15

Forged email in the company's name is blocked by mail servers.

Policy p=reject.

Source data: DNS TXT _dmarc.mozilla.org
v=DMARC1; p=reject; pct=100; adkim=r; aspf=r; rua=mailto:dmarc_agg@vali.email,mailto:dmarc@mozilla.com
$ dig +short TXT _dmarc.mozilla.org
Documentation: RFC 7489 — DMARC (https://www.rfc-editor.org/rfc/rfc7489) · dmarc.org — FAQ (https://dmarc.org/resources/frequently-asked-questions/)

DKIM — digital signature on email

Passed · Severity: OK · 5/5

A DKIM public key is published. On its own this doesn't prove outgoing mail is signed or aligned with your From domain.

DKIM public key found for selector: google. Confirm signing with dkim=pass in a sent message's Authentication-Results.

Source data: DNS TXT <selector>._domainkey.mozilla.org
google._domainkey: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCeaLfcj7zdLlf8U+HmEV9SvLcrhQcwBBKz…
$ dig +short TXT google._domainkey.mozilla.org
Documentation: RFC 6376 — DKIM (https://www.rfc-editor.org/rfc/rfc6376) · M3AAWG — Email Authentication Best Practices (https://www.m3aawg.org/sites/default/files/m3aawg-email-authentication-recommended-best-practices-09-2020.pdf)

MX — inbound mail routing

Passed · Severity: OK · unscored

Mail exchangers are published for the domain.

4 MX record(s). This shows where inbound mail is routed, not whether mail is sent from the domain.

Source data: DNS MX mozilla.org
10 aspmx3.googlemail.com
5 alt2.aspmx.l.google.com
1 aspmx.l.google.com
5 alt1.aspmx.l.google.com
$ dig +short MX mozilla.org
Documentation: RFC 7505 — Null MX (https://www.rfc-editor.org/rfc/rfc7505) · RFC 5321 §5.1 — Locating the target host (https://www.rfc-editor.org/rfc/rfc5321#section-5.1)

HTTPS available

Passed · Severity: OK · 10/10

The site loads over an encrypted connection.

https://mozilla.org/ returned HTTP 200 (final URL: https://www.mozilla.org/). Client-side certificate validation passed.

Source data: HTTPS GET https://mozilla.org/
HTTP 200
Final URL: https://www.mozilla.org/
$ curl -sIL https://mozilla.org/
Documentation: OWASP — Transport Layer Security Cheat Sheet (https://cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Security_Cheat_Sheet.html) · Mozilla — Server Side TLS (https://wiki.mozilla.org/Security/Server_Side_TLS)

HTTP → HTTPS redirect

Passed · Severity: OK · 7/7

Visitors arriving at an unencrypted address are automatically sent to the secure version.

HTTP 302 → https://mozilla.org:443/

Source data: HTTP GET http://mozilla.org/ (redirects not followed)
HTTP 302
Location: https://mozilla.org:443/
$ curl -sI http://mozilla.org/ | grep -iE "^(HTTP|location)"
Documentation: OWASP — Transport Layer Security Cheat Sheet (https://cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Security_Cheat_Sheet.html) · RFC 6797 — HSTS (https://www.rfc-editor.org/rfc/rfc6797)

SSL/TLS certificate validity

Passed · Severity: OK · 8/8

The certificate was accepted by a validating TLS client at scan time.

Live TLS handshake succeeded. Latest issuance in CT logs: Amazon Trust Services, expiring 2027-05-10 (176 days). CT shows issued certificates, not necessarily the one served — confirm dates with the verify command.

Source data: Certificate Transparency logs (certspotter) for mozilla.org
Live TLS handshake: certificate accepted
CT logs (context only, not scored):
Issuer: Amazon Trust Services
Valid from: 2026-10-25
Valid until: 2027-05-10
Names: mozilla.org, www.mozilla.org, www.mozorg.moz.works
Based on Certificate Transparency logs; may not reflect the certificate currently served.
$ echo | openssl s_client -connect mozilla.org:443 -servername mozilla.org 2>/dev/null | openssl x509 -noout -issuer -dates
Documentation: Certificate Transparency (https://certificate.transparency.dev/) · Let's Encrypt — Docs (https://letsencrypt.org/docs/) · Mozilla — Server Side TLS (https://wiki.mozilla.org/Security/Server_Side_TLS)

HSTS — enforce encryption in the browser

Passed · Severity: OK · 7/8

Browsers are told to always use an encrypted connection to the site.

max-age=31536000 (365 days), no includeSubDomains. ≥ 180 days recommended.

Source data: Response headers from https://www.mozilla.org/
Strict-Transport-Security: max-age=31536000
$ curl -sIL https://mozilla.org/ | grep -i "Strict-Transport-Security"
Documentation: MDN — Strict-Transport-Security (https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security) · RFC 6797 — HSTS (https://www.rfc-editor.org/rfc/rfc6797) · OWASP — HTTP Headers Cheat Sheet (https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html)

CSP — protection from script injection

Needs attention · Severity: Low · Hardening gap · 5/8

A script policy exists, but it's permissive and offers only partial protection.

script-src includes: 'unsafe-inline', 'unsafe-eval' — weakens XSS protection.

Source data: Response headers from https://www.mozilla.org/
Content-Security-Policy: form-action 'self' https://abdri3ttkb.execute-api.us-east-2.amazonaws.com https://accounts.firefox.com/ https://basket.mozilla.org; frame-src 'self' accounts.firefox.com gtm.mozilla.org https://gtm.mozilla.org js.stripe.com www.google-analytics.com www.googletagmanager.com www.youtube.com; upgrade-insecure-requests; font-src 'self' www.mozilla.org; default-src 'self' *.mozilla.org; object-src 'none'; style-src 'self' 'unsafe-inline' www.mozilla.org; img-src 'self' blog.mozilla.org data: https://gtm.mozilla.org images.ctfassets.net www.google-analytics.com www.googletagmanager.com www.mozilla.org; connect-src 'self' *.analytics.google.com *.google-analytics.com *.googletagmanager.com analytics.google.com google-analytics.com googletagmanager.com gtm.mozilla.org https://abdri3ttkb.execute-api.us-east-2.amazonaws.com https://accounts.firefox.com/ https://basket.mozilla.org https://gtm.mozilla.org o1069899.ingest.sentry.io o1069899.sentry.io region1.google-analytics.com; base-uri 'none'; media-src 'self' assets.mozilla.net videos.cdn.mozilla.net www.mozilla.org; script-src 'self' 'unsafe-eval' 'unsafe-inline' *.google-analytics.com *.googletagmanager.com google-analytics.com googletagmanager.com https://gtm.mozilla.org js.stripe.com s.ytimg.com tagmanager.google.com www.mozilla.org www.youtube.com; frame-ancestors 'none'
$ curl -sIL https://mozilla.org/ | grep -i "Content-Security-Policy"
Fix recommendation (effort: Complex)
  1. First publish Content-Security-Policy-Report-Only — it blocks nothing, it only reports.
  2. Collect violations for a week or two and tune the policy to your legitimate sources.
  3. Switch to the Content-Security-Policy header and replace 'unsafe-inline' with a nonce or hash.
/*
  Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'

Safety: This change is made in your server/CDN settings. Test on staging before production. An overly strict CSP will break scripts — that's why you start in Report-Only mode.

Documentation: MDN — Content Security Policy (https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP) · OWASP — CSP Cheat Sheet (https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html)

Clickjacking protection

Passed · Severity: OK · 5/5

The site can't be embedded by foreign sites.

X-Frame-Options: DENY frame-ancestors 'none'

Source data: Response headers from https://www.mozilla.org/
X-Frame-Options: DENY
CSP frame-ancestors: 'none'
$ curl -sIL https://mozilla.org/ | grep -i "X-Frame-Options"
Documentation: MDN — X-Frame-Options (https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Frame-Options) · OWASP — Clickjacking Defense (https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html)

X-Content-Type-Options

Passed · Severity: OK · 4/4

The browser won't guess file types in a way that could execute code.

nosniff is set.

Source data: Response headers from https://www.mozilla.org/
X-Content-Type-Options: nosniff
$ curl -sIL https://mozilla.org/ | grep -i "X-Content-Type-Options"
Documentation: MDN — X-Content-Type-Options (https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Content-Type-Options) · OWASP — HTTP Headers Cheat Sheet (https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html)

Referrer-Policy

Passed · Severity: OK · 3/3

Internal URLs don't leak to external sites.

Referrer-Policy: strict-origin-when-cross-origin

Source data: Response headers from https://www.mozilla.org/
Referrer-Policy: strict-origin-when-cross-origin
$ curl -sIL https://mozilla.org/ | grep -i "Referrer-Policy"
Documentation: MDN — Referrer-Policy (https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Referrer-Policy) · OWASP — HTTP Headers Cheat Sheet (https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html)

Permissions-Policy

Needs attention · Severity: Low · Hardening gap · 0/2

Access to sensitive features like the camera and location isn't restricted.

Missing Permissions-Policy header.

Source data: Response headers from https://www.mozilla.org/
Permissions-Policy: (missing)
$ curl -sIL https://mozilla.org/ | grep -i "Permissions-Policy"
Fix recommendation (effort: Easy)
  1. Disable browser features the site doesn't need (camera, microphone, geolocation).
/*
  Permissions-Policy: camera=(), microphone=(), geolocation=()

Safety: This change is made in your server/CDN settings. Test on staging before production. Don't disable a feature the site actually uses.

Documentation: MDN — Permissions-Policy (https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Permissions-Policy) · OWASP — HTTP Headers Cheat Sheet (https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html)

Software version disclosure

Passed · Severity: OK · unscored

The server doesn't disclose software versions.

No version numbers found in the Server / X-Powered-By headers.

Source data: Response headers from https://www.mozilla.org/
server: cloudflare
x-powered-by: (missing)
$ curl -sIL https://mozilla.org/ | grep -iE "^(server|x-powered-by)"
Documentation: OWASP — HTTP Headers Cheat Sheet (https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html)

DNSSEC — signed DNS records

Needs attention · Severity: Medium · Hardening gap · 0/7

The domain's records aren't signed, so in some scenarios users could be redirected to a forged server.

No DS record is published at the parent zone, so there's no DNSSEC chain of trust for this zone.

Source data: DNS-over-HTTPS (Cloudflare / Google): AD flag and DS record at the parent
AD = false
DS mozilla.org: NODATA
$ dig +short DS mozilla.org
Fix recommendation (effort: Medium)
  1. Enable DNSSEC at your DNS provider (one click at most providers).
  2. Copy the DS record your provider generates to your domain registrar.
  3. Wait for propagation and verify with DNSViz.
dig +dnssec mozilla.org SOA
delv mozilla.org

Safety: DNS changes are made only at your DNS provider. This tool only reads public data and changes nothing on the domain. A wrong DS record at the registrar will make the domain stop resolving — copy it exactly from the provider.

Documentation: RFC 4033 — DNSSEC (https://www.rfc-editor.org/rfc/rfc4033) · ICANN — DNSSEC: what and why (https://www.icann.org/resources/pages/dnssec-what-is-it-why-important-2019-03-05-en)

CAA — who may issue certificates

Passed · Severity: OK · 5/5

Only authorized certificate authorities can issue certificates for the domain.

CAA records: 0 issue "amazonaws.com" | 0 issue "comodoca.com" | 0 issue "digicert.com" | 0 issue "awstrust.com" | 0 issue "certainly.com" | 0 iodef "mailto:foxsec+caaiodef@mozilla.com" | 0 issue "letsencrypt.org" | 0 issue "amazontrust.com" | 0 issue "amazon.com" | 0 issue "sectigo.com" | 0 issue "pki.goog"

Source data: DNS CAA mozilla.org
0 issue "amazonaws.com"
0 issue "comodoca.com"
0 issue "digicert.com"
0 issue "awstrust.com"
0 issue "certainly.com"
0 iodef "mailto:foxsec+caaiodef@mozilla.com"
0 issue "letsencrypt.org"
0 issue "amazontrust.com"
0 issue "amazon.com"
0 issue "sectigo.com"
0 issue "pki.goog"
$ dig +short CAA mozilla.org
Documentation: RFC 8659 — CAA (https://www.rfc-editor.org/rfc/rfc8659)

DNS server redundancy

Passed · Severity: OK · 3/3

The domain is served by several DNS servers, so one server failing won't take it down.

4 NS servers.

Source data: DNS NS mozilla.org
ns7-66.akam.net
ns1-240.akam.net
ns4-64.akam.net
ns5-65.akam.net
$ dig +short NS mozilla.org
Documentation: RFC 2182 — Secondary DNS server operation (https://www.rfc-editor.org/rfc/rfc2182)

Indicative alignment

Best-practice mapping of public findings to common frameworks. Passive scanning tests public configuration only; it doesn't prove compliance or a violation.

  • Google & Yahoo sender rulesNo gaps observed
  • PCI DSS v4.01 observed gaps
  • NIS2 / vendor due diligence1 observed gaps
  • SOC 2 / ISO 27001 baseline1 observed gaps

Indicative alignment only, based on public configuration. It doesn't establish whether a framework applies to you, and it isn't legal advice, an audit or a certification.

Public DNS records

Amozilla.org35.190.14.201
AAAAmozilla.org2600:1901:0:c197::
MXmozilla.org10 aspmx3.googlemail.com | 5 alt2.aspmx.l.google.com | 1 aspmx.l.google.com | 5 alt1.aspmx.l.google.com
NSmozilla.orgns7-66.akam.net | ns1-240.akam.net | ns4-64.akam.net | ns5-65.akam.net
TXTmozilla.org_zojr3c56nq36tokzhnj9crit28tiqly | google-site-verification=z68pON7CWSaZu_sBqDQofmDL19OVp3krGEjaDl7cSaU | openai-domain-verification=dv-J6NgbJamHFrHSyNqlhElIX5K | ZOOM_verify_lGxIzL49Id7PipUgDgTd9K | google-site-verification=E1vBHtOW-D9IlAj-pbRM-8PrOSiPDT48lrwRlW82ysw | google-site-verification=S3M17z96OKfZJ2dq7mYqQDfRWsEVjy3hdxaSyB72YPc | google-site-verification=Ep3NdzNxaf8Vl48dniNneaqm7JcWUiy3GjKS0wx5zQw | google-site-verification=mU3ta-ZJga-aCNg7IlaRaGYK9sDOMagHRNGVW1FSJGE | google-site-verification=Brpe3hQpo9FlGIHMtK4ViKL60L0G8VM16nXopwVDoEU | google-site-verification=Lo_B34AJAe70BQVNF1Fo1zGGJudPmw9bLTnP2C8lV-s | yandex-verification | rz8t7zvjv5frpfbjs3y5n6g5tkw7gt2q | zoom-domain-verification=ZOOM_verify_671ea7b9c47d4b7b8cc9441f40817e3e | MS=ms14343235 | anthropic-domain-verification-w5rph5=bZ2V4N0ps4oFSU6yrv4DfD6nA | bzbkzkxj2ws8gvtw6hpssfy7lv9kym88 | v=spf1 include:%{i}._ip.%{h}._ehlo.%{d}._spf.vali.email include:_spf.mozilla.com include:_spf.google.com include:spf.fundraiseup.com ~all
TXT_dmarc.mozilla.orgv=DMARC1; p=reject; pct=100; adkim=r; aspf=r; rua=mailto:dmarc_agg@vali.email,mailto:dmarc@mozilla.com
CAAmozilla.org0 issue "amazonaws.com" | 0 issue "comodoca.com" | 0 issue "digicert.com" | 0 issue "awstrust.com" | 0 issue "certainly.com" | 0 iodef "mailto:foxsec+caaiodef@mozilla.com" | 0 issue "letsencrypt.org" | 0 issue "amazontrust.com" | 0 issue "amazon.com" | 0 issue "sectigo.com" | 0 issue "pki.goog"
DSmozilla.org—
Passive check only: reading public DNS records, Certificate Transparency logs and ordinary GET requests to the homepage over HTTPS and HTTP. No changes were made to the scanned domain. Results are an indication and do not replace a professional security assessment.

Check your own domain