Audits the account and DNS zone this page is served from: TLS, HSTS, DNSSEC, mail records and WAF rules.
highDNS records pointing to hostnames have valid targets without takeover risk
dns_record_cname_target_validaccepted riskA false positive, and acting on it would make things worse. The flagged target is the null MX from RFC 7505: an MX record pointing at "." is the standard way to declare that a domain receives no mail at all. The check reads that "." as a dangling hostname and warns about mail interception, which is precisely what the null MX prevents. Removing the record to turn this green would reopen the risk it is warning about.
highDNS records do not expose internal IP addresses
dns_record_no_internal_ipaccepted riskA false positive, and worth stating plainly. The address is 100::, the IPv6 discard prefix from RFC 6666, which is what Cloudflare writes for a record that exists only to be proxied. It is not an internal address and it never leaves the account: externally the zone answers with Cloudflare anycast addresses, and a public AAAA lookup returns 2606:4700 addresses, never this one.
highDNS records do not expose internal IP addresses
dns_record_no_internal_ipaccepted riskA false positive, and worth stating plainly. The address is 100::, the IPv6 discard prefix from RFC 6666, which is what Cloudflare writes for a record that exists only to be proxied. It is not an internal address and it never leaves the account: externally the zone answers with Cloudflare anycast addresses, and a public AAAA lookup returns 2606:4700 addresses, never this one.
highRate limiting is configured for the zone
zone_rate_limiting_enabledaccepted riskAvailable on the free plan, which allows one rule, so this is a choice rather than a limit. Rate limiting protects an origin from being overwhelmed, and there is no origin: every response is a static asset served from Cloudflare edge cache on unmetered bandwidth. The only free action is a challenge, which would put an interstitial in front of real readers to defend against nothing.
highWAF is enabled
zone_waf_enabledblockedThe Web Application Firewall is not available on the Cloudflare free plan. Prowler says so itself in the finding. The site is static files with no origin server, no database and no user input, so the attack classes a WAF blocks have nothing here to reach.
highCloudflare Zone OWASP Managed WAF Rulesets Are Enabled
zone_waf_owasp_ruleset_enabledblockedThe OWASP Core Ruleset cannot be deployed on the free plan; only paid plans can. Same reasoning as the WAF check above.
mediumBot Fight Mode is enabled
zone_bot_fight_mode_enabledaccepted riskMutually exclusive with the Content-Security-Policy on this site. Bot Fight Mode injects an inline challenge script whose r and t parameters change on every request, so no hash and no nonce can ever match it. Turning it on would mean adding unsafe-inline to script-src. Trading a real CSP for bot noise on a static site with no login and no forms is the wrong way round.
mediumCloudflare Zone Firewall Rules Use Blocking Actions to Protect Against Threats
zone_firewall_blocking_rules_configuredaccepted riskCustom firewall rules are available on the free plan. Nothing here is worth blocking: the entire site is public static content meant to be read, there is no authenticated surface, and no path that changes state. A blocking rule written only to satisfy a check would be configuration theatre.
mediumDKIM record exists with valid public key
zone_record_dkim_existsaccepted riskThis domain sends no mail, so there is no key to publish. The record is *._domainkey with an empty p=, which RFC 6376 defines as a revoked key, and alongside SPF -all, DMARC p=reject and a null MX it is the recommended way to say "nothing here signs mail". The check looks for a valid public key and finds none, which is correct and also the point.
lowHotlink Protection is enabled
zone_hotlink_protection_enabledaccepted riskA bandwidth control rather than a security control, and static bandwidth on Workers is unmetered, so it protects nothing here. It also blocks other sites from loading images by referer, which is how link previews on social platforms fetch the portrait. Real cost, no benefit.