Security config
HSTS without locking yourself out of HTTP forever
· Configuration notes, not a newsroom.
Strict-Transport-Security is a high finding on SiteRune when it is missing. Preload is optional. includeSubDomains is not something to copy from a blog if you still have an HTTP tool on a subdomain.
What the header actually does
HSTS tells browsers: for max-age seconds, never speak HTTP to this host. The first visit can still be HTTP unless the site is on the preload list. After that, SSL-stripping on cafe Wi-Fi gets much harder. SiteRune scores presence of Strict-Transport-Security on the final URL. We do not invent preload.
A safe rollout
Start with max-age=86400 (a day) on production HTTPS. Confirm nothing still needs HTTP: old APIs, staging on a subdomain, email links. Then raise to 31536000 and add includeSubDomains only if every subdomain is on TLS. Preload last, and only if you understand you are asking Chrome to hard-code HTTPS for your domain.
- WordPress: set it in nginx / the host, not a random plugin that also blocks GPTBot.
- Next.js: headers() in next.config or the Vercel Security Headers UI.
- Shopify / Webflow / Wix: you probably need Cloudflare in front. The admin will not send HSTS.
How SiteRune scores it
Finding id: sec-hsts. High if the page is already HTTPS, medium if it is still HTTP (fix TLS first). Loopback hosts are not failed for HTTP — we are not going to punish localhost. Production SiteRune sends max-age=31536000; includeSubDomains; preload because this origin has no HTTP subdomains we still need.
Run it on a live URL
The brief will name your CMS and attach the files. Three guest scans, no card.