Hardening a corporate website that a DNS filter was blocking
A customer's corporate DNS filter was rejecting our client's domain, and that stopped the client operating as one of that customer's suppliers. The site was not compromised and not blacklisted. It was simply unhardened. Polargate diagnosed it in a week, migrated the CMS to hosting the client controls, and hardened it there, because the CMS admin panel was the only access available.

- 6
- standard security headers missing before the work
- 24
- pages audited link by link after the DNS cutover, 12 per language
- 4
- days from award to technical close
The problem
The trigger was not a security incident, it was a commercial block. A customer's corporate DNS filter was rejecting our client's domain, and that stopped the client working as one of that customer's suppliers. Nothing was infected: the diagnosis found no compromise and no blacklist entry. What tripped the automatic classification of low security posture was configuration. The original provider received the list of fixes and formally answered that they fell outside its scope. Around three months were lost in that negotiation before the client changed provider. And the only access available to us was the CMS admin panel.
What we built
One week of diagnosis with public reference scanners: SSL analysis, HTTP header scan, domain reputation, safe browsing and multi-engine antivirus. Then three phases. Migration of the CMS to hosting under the client's control, with functional verification and a pass over URLs and permalinks. Hardening: the six missing headers plus a strict Referrer-Policy, a Permissions-Policy with the sensitive APIs disabled and a server header without a version, along with CMS-level work (login path moved, common paths and files hidden, brute force protection, an application firewall with automatic IP blocking, XML-RPC and discovery endpoints off). Then reputation cleanup. The DNS cutover lowered the TTL 24 to 48 hours ahead and left the mail records untouched.
The outcome
Headers went from F at the initial diagnosis to A+ after hardening, on a forced no-cache scan with no warnings. That reading was taken on the migration host in 2026, before the live domain was cut over, and we hold no record of a re-scan of the live domain afterwards, so we do not present it as a production grade. After the cutover we audited 24 pages, 12 per language, link by link, and found the initial mass URL replacement had been incomplete. Closed in four days from award, with a delivery report and a 30-day technical warranty.
What actually triggered it
Not an incident. A commercial block. A customer's corporate DNS filter was rejecting our client's domain, and a supplier whose website a customer's network refuses to resolve has a business problem, not an IT one.
The brief we were given was "our site looks hacked to them". It was not.
The diagnosis, in a week
We delivered a technical report on security, SSL and reputation, built on public reference scanners: SSL analysis, HTTP header scan, domain reputation, safe browsing and multi-engine antivirus. Anyone can re-run all of them, which is the point.
The conclusion was clear. The site was not compromised and it was not on any blacklist. This was a hardening and configuration problem, not an infection.
TLS was already in good shape before we started: valid certificate, TLS 1.3 active, no weak ciphers, valid chain, forward secrecy. SSL graded A at the initial diagnosis, before we touched anything. Three other things were driving the automatic "low security posture" classification that corporate filters act on:
- No HTTP security headers at all. Header grade: F.
- An expired, non-matching backup certificate exposed by the shared hosting.
- Visible server fingerprints: interpreter version, control panel signature and technology header.
The constraint that decided the architecture
The only access available was the CMS admin panel. No hosting access means server-level hardening is not applicable on the original infrastructure, so migrating was not an aesthetic preference. It was the only route.
The other option was rebuilding the site in code: an estimated three to six weeks, with the domain still blocked for all of them. The migration was reversible and unblocked sooner. The static rebuild stayed on the shelf as a deferred phase.
What changed, exactly
The work ran in three phases: migration with functional verification and a pass over URLs and permalinks, security and configuration hardening, and reputation cleanup.
Headers actually served after hardening
HSTS with includeSubdomains, a Content-Security-Policy, the legacy XSS protection header, nosniff, X-Frame-Options set to SAMEORIGIN, a strict Referrer-Policy, a Permissions-Policy with the full list of sensitive APIs disabled, and a server header with no version in it.
The CMS layer
Internal paths remapped, common paths and files hidden, the login path moved with a custodied emergency URL, brute force protection, an application firewall that blocks IPs automatically, XML-RPC disabled, discovery endpoints switched off and theme detectors blocked. AI crawlers were left allowed on purpose, because search visibility was part of the job.
What we did not do, and will not claim
There was no network WAF and no CDN in this project. The only firewall was the one inside the CMS hardening plugin. On cookies, the site kept its legacy consent plugin and we hold no record of work on cookie flags, so we claim none. On dependencies, the final inventory was around twenty plugins, three of them added by us; no CVE list or vulnerability count was recorded, so we publish no number of vulnerabilities closed.
The DNS cutover
TTL lowered 24 to 48 hours ahead, A record changed, and the mail records (MX, SPF, DKIM and DMARC) left untouched, so corporate mail on the domain never stopped.
How it was measured, and what that measurement is worth
Before: headers F, SSL A. After hardening: A+ on headers, from a scan forced without cache and returning no warnings.
That A+ was read on the migration host, in 2026, before the live domain was cut over. We have no record of a re-scan of the live domain after the cutover, so we do not present A+ as a production result.
This matters beyond one project. A header grade is a dated photograph of one host, not a property the site owns from then on. A new embed, a new plugin, a provider default and the grade moves. If you want to know what a site scores today, scan it today.
The link audit, and why it exists
After the DNS change we audited 24 pages, 12 in each language, link by link. That is where we found the initial mass URL replacement had been incomplete. References to the staging environment had survived in the global footer, in the page builder CTAs, in the consent links inside forms, in several PDFs, in legal texts, and in a theme icon font that was returning an error.
The reusable lesson: a mass replacement can run in dry-run mode and be assumed done. A change is not done until a real request against the live site proves it.
Close, and what we do not claim
The project closed with a delivery report as a PDF, the technical work complete, a clean link audit and a 30-day technical warranty. Four days from award to technical close. Four months from the original incident, of which around three were lost negotiating with the previous provider.
Two things we deliberately do not claim. We have no record that the customer lifted the DNS block. And the reputation review requests filed at the end were still pending at close, with no outcome recorded.
The method, in order
The order is the method, and the order is the part that transfers to the next site. Measure with public tools anyone can re-run. Fix the configuration rather than the story. Measure again, naming the host and the date of the scan. Then audit against the live site instead of against the plan.
Questions about this project
Can you fix a website that a corporate DNS filter is blocking?
Is an A+ security headers grade permanent?
Do you need access to our hosting to harden our site?
Related work
GlobaliaThe corporate web platform of Globalia
Globalia, the Spanish travel group, had its people data in Microsoft 365 and its public website somewhere else. Polargate built one web platform on a single repository: an employee directory synced from Microsoft 365, a digital business card with Apple Wallet and Google Wallet passes, and the group's public site, made readable by AI crawlers without rebuilding it. Pedro Ciordia works at Globalia, so this is related-party revenue, not a client won on the open market.
2026Read the case
Global Dynamic Security GroupBrand and bilingual site for Global Dynamic Security Group
Brand identity, a 15-page identity manual and a bilingual Spanish and English corporate site for Global Dynamic Security Group (GDS), a security services group in the Dominican Republic, delivered as one fixed-price project.
2026Read the case
NationwideLegalThe CRM behind NationwideLegal, on Odoo 18
NationwideLegal in the United States runs its commercial operation on a CRM that Polargate built on Odoo 18 Enterprise and still directs technically: one custom module, five new models, permissions rebuilt around how the team actually sells, and a verification pass against production after every deploy.
2026Read the case
Start the engine
Tell us what you are building in a few short questions. A senior engineer answers in writing within 48 business hours, with a first take on scope, timeline and price.