Digital exposure report
microsoft.com
High exposure. Significant weaknesses put the brand, customers and email at risk.
Scanned: 2026-11-15 19:22 UTC
Full coverage: every applicable check was assessed.
What to do first
- 1.
Tell browsers to always use the secure version
Helps browsers use HTTPS on future visits after they have received the policy.
Who can fix it: Your web host
How to verify after the fix
curl -sIL https://microsoft.com/ | grep -i "Strict-Transport-Security"
- 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://microsoft.com/ | grep -i "Content-Security-Policy"
A starting point, not a security guarantee.
What this grade means
- Tested hostname
- microsoft.com
- Website request
- GET https://microsoft.com/ → https://www.microsoft.com/
- Scan time
- 2026-11-15 19:22:32 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 security | 30/30 | Spoofing email from this domain is hard. |
| Encryption & certificate | 25/25 | Traffic to the site is encrypted and the certificate is valid. |
| Browser protections | 0/30 | Several browser hardening headers are missing, which removes layers of protection against script injection and framing. |
| DNS infrastructure | 8/15 | The domain's infrastructure works, but recommended hardening is missing. |
Fix priorities
- 1.HighHSTS — enforce encryption in the browser · Hardening gap+8
- 2.MediumClickjacking protection · Hardening gap+5
- 3.MediumDNSSEC — signed DNS records · Hardening gap+7
- 4.MediumCSP — protection from script injection · Hardening gap+8
- 5.LowX-Content-Type-Options · Hardening gap+4
- 6.LowReferrer-Policy · Hardening gap+3
- 7.LowPermissions-Policy · Hardening gap+2
Findings
SPF — who may send mail for the domain
Passed · Severity: OK · 10/10An authorized sender list is defined and mail from other servers is rejected.
Valid SPF record with -all. 4 of the 10 allowed DNS lookups.
v=spf1 include:_spf-a.microsoft.com include:_spf-b.microsoft.com include:_spf-ssg-a.msft.net include:_spf1-meo.microsoft.com -all
$ dig +short TXT microsoft.com
DMARC — anti-spoofing policy
Passed · Severity: OK · 15/15Forged email in the company's name is blocked by mail servers.
Policy p=reject.
v=DMARC1; p=reject; pct=100; rua=mailto:itex-rua@microsoft.com; ruf=mailto:itex-ruf@microsoft.com; fo=1
$ dig +short TXT _dmarc.microsoft.com
DKIM — digital signature on email
Passed · Severity: OK · 5/5A 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: selector2. Confirm signing with dkim=pass in a sent message's Authentication-Results.
selector2._domainkey: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPkb8bu8RGWeJGk3hJrouZXIdZ+HTp/azR…
$ dig +short TXT selector2._domainkey.microsoft.com
MX — inbound mail routing
Passed · Severity: OK · unscoredMail exchangers are published for the domain.
1 MX record(s). This shows where inbound mail is routed, not whether mail is sent from the domain.
10 microsoft-com.mail.protection.outlook.com
$ dig +short MX microsoft.com
HTTPS available
Passed · Severity: OK · 10/10The site loads over an encrypted connection.
https://microsoft.com/ returned HTTP 200 (final URL: https://www.microsoft.com/). Client-side certificate validation passed.
HTTP 200 Final URL: https://www.microsoft.com/
$ curl -sIL https://microsoft.com/
HTTP → HTTPS redirect
Passed · Severity: OK · 7/7Visitors arriving at an unencrypted address are automatically sent to the secure version.
HTTP 307 → https://microsoft.com/
HTTP 307 Location: https://microsoft.com/
$ curl -sI http://microsoft.com/ | grep -iE "^(HTTP|location)"
SSL/TLS certificate validity
Passed · Severity: OK · 8/8The certificate was accepted by a validating TLS client at scan time.
Live TLS handshake succeeded. Latest issuance in CT logs: Microsoft, expiring 2027-01-30 (75 days). CT shows issued certificates, not necessarily the one served — confirm dates with the verify command.
Live TLS handshake: certificate accepted CT logs (context only, not scored): Issuer: Microsoft Valid from: 2026-10-22 Valid until: 2027-01-30 Names: 2010office.it, adatum.ai, ai.fluentui.dev, aiandyou.today, aielectionsaccord.com, aiotlabs.microsoft.com Based on Certificate Transparency logs; may not reflect the certificate currently served.
$ echo | openssl s_client -connect microsoft.com:443 -servername microsoft.com 2>/dev/null | openssl x509 -noout -issuer -dates
HSTS — enforce encryption in the browser
Failed · Severity: High · Hardening gap · 0/8Browsers aren't told to always use an encrypted connection, enabling interception attacks on public networks.
No Strict-Transport-Security header. Users are exposed to SSL stripping on the first request.
Strict-Transport-Security: (missing)
$ curl -sIL https://microsoft.com/ | grep -i "Strict-Transport-Security"
- Start with a short max-age (300 seconds) and make sure every subdomain works over HTTPS.
- Gradually raise it to 31536000 (one year) and add includeSubDomains.
- Consider preload only once the policy is stable — removal from the preload list is slow.
/* Strict-Transport-Security: max-age=31536000; includeSubDomains
Safety: This change is made in your server/CDN settings. Test on staging before production. HSTS is cached in the visitor's browser — a long max-age on a site without working HTTPS will block access.
CSP — protection from script injection
Failed · Severity: Medium · Hardening gap · 0/8Missing Content-Security-Policy header: this removes one layer of protection against script injection.
No Content-Security-Policy header found.
Content-Security-Policy: (missing)
$ curl -sIL https://microsoft.com/ | grep -i "Content-Security-Policy"
- First publish Content-Security-Policy-Report-Only — it blocks nothing, it only reports.
- Collect violations for a week or two and tune the policy to your legitimate sources.
- 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.
Clickjacking protection
Failed · Severity: Medium · Hardening gap · 0/5Missing X-Frame-Options / frame-ancestors: this removes one layer of protection against clickjacking.
No valid X-Frame-Options and no frame-ancestors in the CSP.
X-Frame-Options: (missing)
$ curl -sIL https://microsoft.com/ | grep -i "X-Frame-Options"
- Add X-Frame-Options: SAMEORIGIN (or DENY if the site is never embedded anywhere).
- Also set frame-ancestors in the CSP — the modern alternative.
/* X-Frame-Options: SAMEORIGIN
Safety: This change is made in your server/CDN settings. Test on staging before production. If partners embed the site in an iframe, add them to frame-ancestors instead of using DENY.
X-Content-Type-Options
Failed · Severity: Low · Hardening gap · 0/4The browser may interpret files as code unintentionally.
Missing X-Content-Type-Options: nosniff header (MIME sniffing).
X-Content-Type-Options: (missing)
$ curl -sIL https://microsoft.com/ | grep -i "X-Content-Type-Options"
- Add X-Content-Type-Options: nosniff to every response.
/* X-Content-Type-Options: nosniff
Safety: This change is made in your server/CDN settings. Test on staging before production.
Referrer-Policy
Failed · Severity: Low · Hardening gap · 0/3Internal URLs (including parameters) may leak to external sites.
Referrer-Policy is missing; the browser will use its default.
Referrer-Policy: (missing)
$ curl -sIL https://microsoft.com/ | grep -i "Referrer-Policy"
- Set Referrer-Policy: strict-origin-when-cross-origin.
/* Referrer-Policy: strict-origin-when-cross-origin
Safety: This change is made in your server/CDN settings. Test on staging before production.
Permissions-Policy
Needs attention · Severity: Low · Hardening gap · 0/2Access to sensitive features like the camera and location isn't restricted.
Missing Permissions-Policy header.
Permissions-Policy: (missing)
$ curl -sIL https://microsoft.com/ | grep -i "Permissions-Policy"
- 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.
Software version disclosure
Passed · Severity: OK · unscoredThe server doesn't disclose software versions.
No version numbers found in the Server / X-Powered-By headers.
server: cloudflare x-powered-by: (missing)
$ curl -sIL https://microsoft.com/ | grep -iE "^(server|x-powered-by)"
DNSSEC — signed DNS records
Needs attention · Severity: Medium · Hardening gap · 0/7The 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.
AD = false DS microsoft.com: NODATA
$ dig +short DS microsoft.com
- Enable DNSSEC at your DNS provider (one click at most providers).
- Copy the DS record your provider generates to your domain registrar.
- Wait for propagation and verify with DNSViz.
dig +dnssec microsoft.com SOA delv microsoft.com
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.
CAA — who may issue certificates
Passed · Severity: OK · 5/5Only authorized certificate authorities can issue certificates for the domain.
CAA records: 0 contactemail "caarecordaware@microsoft.com"
0 contactemail "caarecordaware@microsoft.com"
$ dig +short CAA microsoft.com
DNS server redundancy
Passed · Severity: OK · 3/3The domain is served by several DNS servers, so one server failing won't take it down.
4 NS servers.
ns1-39.azure-dns.com ns2-39.azure-dns.net ns3-39.azure-dns.org ns4-39.azure-dns.info
$ dig +short NS microsoft.com
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.03 observed gaps
- NIS2 / vendor due diligence2 observed gaps
- SOC 2 / ISO 27001 baseline4 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
| A | microsoft.com | 150.171.110.211 |
| AAAA | microsoft.com | 2603:1061:14:49::1 |
| MX | microsoft.com | 10 microsoft-com.mail.protection.outlook.com |
| NS | microsoft.com | ns1-39.azure-dns.com | ns2-39.azure-dns.net | ns3-39.azure-dns.org | ns4-39.azure-dns.info |
| TXT | microsoft.com | d365mktkey=3uc1cf82cpv750lzk70v9bvf2 | facebook-domain-verification=fwzwhbbzwmg5fzgotc2go51olc3566 | google-site-verification=pjPOauSPcrfXOZS9jnPPa5axowcHGCDAl1_86dCqFpk | fg2t0gov9424p2tdcuo94goe9j | t7sebee51jrj7vm932k531hipa | google-site-verification=M--CVfn_YwsV-2FGbCp_HFaEj23BmT0cTF4l8hXgpvM | google-site-verification=GfDnTUdATPsK1230J0mXbfsYw-3A9BVMVaKSd4DcKgI | d365mktkey=SxDf1EZxLvMwx6eEZUxzjFFgHoapF8DvtWEUjwq7ZTwx | hubspot-developer-verification=OTQ5NGIwYWEtODNmZi00YWE1LTkyNmQtNDhjMDMxY2JjNDAx | d365mktkey=QDa792dLCZhvaAOOCe2Hz6WTzmTssOp1snABhxWibhMx | d365mktkey=6358r1b7e13hox60tl1uagv14 | google-site-verification=uFg3wr5PWsK8lV029RoXXBBUW0_E6qf1WEWVHhetkOY | docusign=d5a3737c-c23c-4bd0-9095-d2ff621f2840 | d365mktkey=j2qHWq9BHdaa3ZXZH8x64daJZxEWsFa0dxDeilxDoYYx | atlassian-domain-verification=xvoaqRfxSg3PnlVnR4xCSOlKyw1Aln0MMxRiKXnwWroFG7vI76TUC8xYb03MwMXv | workplace-domain-verification=lK0QDLk73xymCYMKUXNpfKAT8TY5Mx | google-site-verification=uhh5_jbxpcQgnb-A7gDIjlrr5Ef34lA2t2_BAveYpnk | MS=ms79629062 | d365mktkey=3l6dste9txazu0Qd2zu4135PUB4E35txLxyzJxjkPbsx | d365mktkey=wbU64GRacxVEQxwcLSQnx0zisXLYzgUbfvsufIqO9ZUx | linear-domain-verification=iuq6saifcnbe | d365mktkey=ZGFU0tlXPekPusNHPo5QQQWpVf0gic0xpuKroNy3NQEx | d365mktkey=JlXV17lfZjyvWxNje1qiP390ACSKzTxo5mGqZ3V2BmYx | d365mktkey=PNcDqkW71x8VOUhcE96aGM4l5PYX1gnlRl6ieXUl5eMx | d365mktkey=Fu49WtSTeClkHtK7S14227RIVpGwwGrzEsO6RVs1I2Ax | ms-domain-verification=25524f4b-1476-489c-a086-30f4c5016ecc | ms-domain-verification=1c4e4677-e58f-4117-8d61-e5b2810388c2 | mixpanel-domain-verify=5803bc4c-5bb6-4ce1-8076-753800097373 | sitecore-domain-verification=1d46cb5467624e33a408d14324874088 | ms-domain-verification=478640ad-6524-43d5-86c4-a914804b9e93 | ms-domain-verification=561512fc-b4ba-4ac7-a946-e464c8f49f1b | _zx2p8gpzv720db2aqmozy4jhwk2nl43 | airtable-verification=79a09e4a8013ff5737798ffb4ea88eee | 1password-site-verification=35ZTURTFFFDC5BW7GFQKRJ77QM | d365mktkey=8fEQahTresJms7tZGxGFr94T1zDz36oCbUt1LJc99mox | d365mktkey=heYmJ57sWrwMjCgIG1xRwTREJrQokUIDtBcNfGuxoWQx | ms-domain-verification=d6545068-89f7-4432-b947-0b137e8a9fe3 | hcp-domain-verification=3ce174a8b9fba88909633ab13eb1d81ce0123454745d66e500052ed84b7248a1 | v=MCPv1; k=ecdsap384; p=As/XxnDWZFxFwHvRZj+HbG5/ImtAeabLkiOWu1h7wCJQFAR216E9HoYQ5Hy6o7StoQ== | v=MCPv1; k=ecdsap384; p=AoHTKEi2W8L2P8cf9CoDicIxYiuttTkwtIeFOqYCewBGoRZiiF+9/92saUkIDERGAA== | ms-domain-verification=65f91178-9dfb-41cd-929d-08d1a38ed607 | v=MCPv1; k=ecdsap384; p=Asc8WWov6gsmCCzn4CSrwRuJIh5SqvaitKz/LlTW+SD54lLC52wzcnWhlTI416p2vw== | liveramp-site-verification=kxcV8fDH_FUNUZQEcAO6lwgim47f_hNLgMP4VG0PF_Q | v=MCPv1; k=ecdsap384; p=AqXeTHJ/1FCYeuvJ8dc1B+X3uHaa7m2W0s31vzL4opnrJlSaBdtbWTY8Ti5WiZnu9Q== | v=MCPv1; k=ecdsap384; p=An4mJIFLRys9h1EvjX18SJs5p1uEF5MHcs2JJLYPrI48C5Qt9FpaZEM0sQTV4JvNYw== | v=MCPv1; k=ecdsap384; p=A/Mf6IKdZzcHfBvpiVz9rkdPTIcCP5IbRDdEkeP3PgXEXF3mNjorahOwaYlMINBF5A== | v=MCPv1; k=ecdsap384; p=A8qndBCDJGtFF2+3v/IPIMmM0SaVcrJBoSue7rKob6sUeK7QGeFuWkrtvze3AiqUDA== | zoom-domain-verification=ZOOM_verify_e97a3d385acb4c47b9b924609a280524 | anthropic-domain-verification-phksss=GZrrKDUR4klRLFCvxyOvqcNGE | v=MCPv1; k=ecdsap384; p=Azw9+u4M8RoH+bxJidKAZzGDmsPkzY1N4cO7rB/uC5x1RBoNfMyBlH/ott0lpo4pOQ== | dobtdihqagnr18hea8uv1h1mvq | atlassian-domain-verification=Sn5AwyIdVgkaRaJA/IKj7ZFMnWeCBnppa9bXGLuJvsakRHH4lYoBxS8g7GVlud9M | openai-domain-verification=dv-sFtCvKOlWoe31gpoSvs7cqsP | hpe-greenlake-domain-verification=495143304a3330533363357a57684f6335556f316f55654675523541464d3954 | v=MCPv1; k=ecdsap384; p=A5JeyhIFWFj4/epHJwt29GRUSrFwGSwXhrhDMAUSklMhfXjI7gi/ekY/fQSWToZdCw== | v=MCPv1; k=ecdsap384; p=A/78JIxAOlNwq8f0T/l50w7zhwQFpEuB8/Jz9CafdXNX7ewOluYpS/EEcSmLgxsHXg== | docker-verification=b912d2f3-8614-4591-962b-9e07dbf7c047 | _ij59qjkrntjw3gpjplj3or17mo3xxvt | google-site-verification=jwrHU99GU8HSXlRFeywLDZmVawD2DWVCebQ41shKK0M | v=spf1 include:_spf-a.microsoft.com include:_spf-b.microsoft.com include:_spf-ssg-a.msft.net include:_spf1-meo.microsoft.com -all | google-gws-recovery-domain-verification=77163048 | google-gws-recovery-domain-verification=77417634 |
| TXT | _dmarc.microsoft.com | v=DMARC1; p=reject; pct=100; rua=mailto:itex-rua@microsoft.com; ruf=mailto:itex-ruf@microsoft.com; fo=1 |
| CAA | microsoft.com | 0 contactemail "caarecordaware@microsoft.com" |
| DS | microsoft.com | — |