Security
· 11 checks — HTTP headers, CSP, TLS handshake, and cookie hygiene rolled into one auditable list.FContent Security PolicyAction4 of 10 CSP checks passedFIX
'unsafe-inline' allows inline <script> tags, defeating CSP against XSS. Remove it and use nonces or hashes instead.
Unsafe value (unsafe-inline, unsafe-eval) in script-src defeats CSP's main protection — XSS injections can execute again.
Learn more ▾ ▴
unsafe-inline allows inline <script> tags; unsafe-eval allows eval() and similar. Both are necessary for some legacy code but explicitly dangerous. Migrate to nonces (per-page random tokens) or hashes (per-script SHA-256) instead.
Source: OWASP CSP / MDN
'unsafe-eval' allows eval() and similar functions, enabling code injection. Remove it.
Unsafe value (unsafe-inline, unsafe-eval) in script-src defeats CSP's main protection — XSS injections can execute again.
Learn more ▾ ▴
unsafe-inline allows inline <script> tags; unsafe-eval allows eval() and similar. Both are necessary for some legacy code but explicitly dangerous. Migrate to nonces (per-page random tokens) or hashes (per-script SHA-256) instead.
Source: OWASP CSP / MDN
A wildcard allows scripts from any origin, making CSP ineffective against XSS. Restrict to specific trusted origins.
script-src * defeats the entire point of CSP — any host can load scripts on your page.
Learn more ▾ ▴
A wildcard in script-src (or its absence with no default-src) lets any origin host scripts your page will execute. The CSP header is present but provides no XSS protection. Replace with an explicit allowlist (your own domain plus specific CDN hosts) or use nonces/hashes for inline scripts.
Source: MDN CSP / OWASP
Without base-uri, attackers can inject a <base> tag to hijack relative URLs. Set it to 'self' or 'none'.
base-uri 'self'Missing base-uri in CSP leaves a base-tag injection attack path open even on otherwise strict policies.
Learn more ▾ ▴
A common omission: developers add CSP for script-src and frame-ancestors but forget base-uri. The result is a CSP that looks strict but lets an attacker rewrite every URL on the page via <base href>. Add `base-uri 'self'` to close the gap.
Source: MDN CSP
form-action restricts where forms can submit data, preventing form hijacking.
form-action 'self'Security gaps expose your site and users to attacks, eroding trust.
Parsed Policy
DSubresource IntegrityAction1 of 34 external resources have SRIFIX
| Tag | Domain | Integrity |
|---|---|---|
| <link> | fonts.googleapis.com | ✗ Missing |
| <script> | scripts.clarity.ms | ✗ Missing |
| <script> | collector.brandmetrics.com | ✗ Missing |
| <script> | js-na2.hs-banner.com | ✗ Missing |
| <script> | js-na2.hscollectedforms.net | ✗ Missing |
| <script> | js-na2.hs-analytics.net | ✗ Missing |
| <script> | silo61.p7cloud.net | ✗ Missing |
| <script> | www.clarity.ms | ✗ Missing |
| <script> | snap.licdn.com | ✗ Missing |
| <script> | cdn.parsely.com | ✗ Missing |
| <script> | unpkg.com | ✗ Missing |
| <script> | www.googletagmanager.com | ✗ Missing |
| <script> | edge.atmtd.com | ✗ Missing |
| <script> | www.googletagservices.com | ✗ Missing |
| <script> | connect.facebook.net | ✗ Missing |
| <script> | connect.facebook.net | ✗ Missing |
| <script> | www.gstatic.com | ✓ Protected |
| <script> | goddesslamps.com | ✗ Missing |
| <script> | www.googletagmanager.com | ✗ Missing |
| <script> | challenges.cloudflare.com | ✗ Missing |
| <script> | public.servenobid.com | ✗ Missing |
| <script> | ak.sail-horizon.com | ✗ Missing |
| <script> | js-na2.hs-scripts.com | ✗ Missing |
| <script> | sb.scorecardresearch.com | ✗ Missing |
| <script> | securepubads.g.doubleclick.net | ✗ Missing |
| <script> | scripts.atmtd.com | ✗ Missing |
| <script> | fundingchoicesmessages.google.com | ✗ Missing |
| <script> | fundingchoicesmessages.google.com | ✗ Missing |
| <script> | fundingchoicesmessages.google.com | ✗ Missing |
| <script> | www.google.com | ✗ Missing |
| <script> | stats.wp.com | ✗ Missing |
| <script> | cdn.brandmetrics.com | ✗ Missing |
| <script> | cdn.brandmetrics.com | ✗ Missing |
| <script> | ep2.adtrafficquality.google | ✗ Missing |
Dsecurity.txtActionNo /.well-known/security.txt publishedFIX
security.txt
No security.txt found at /.well-known/security.txt
BSecurity Headers6 of 10 headers properly configuredREVIEW
A short max-age leaves a window for downgrade attacks. Set max-age to at least 31536000 (1 year).
max-age=31536000; includeSubDomainsShort HSTS max-age leaves a downgrade-attack window every time the cache expires — set ≥ 1 year.
Learn more ▾ ▴
max-age below 31536000 (1 year) is below industry recommendation. The browser forgets the HSTS policy and re-exposes first-visit downgrade attacks. Set to 63072000 (2 years) and add `includeSubDomains; preload` to qualify for the HSTS preload list.
Source: RFC 6797 / hstspreload.org
COOP isolates your browsing context, preventing cross-origin side-channel attacks. Set to 'same-origin'.
same-originCOOP isolates your top-level browsing context from cross-origin windows — without it, popup-based side-channel attacks remain possible.
Learn more ▾ ▴
Cross-Origin-Opener-Policy: same-origin prevents cross-origin pages from sharing a browsing-context group with yours. This blocks cross-window references that enable Spectre-style timing attacks and tab-nabbing. Required if you want to enable SharedArrayBuffer.
Source: MDN / web.dev
COEP prevents loading cross-origin resources without explicit permission. Required for SharedArrayBuffer and high-resolution timers.
require-corpCOEP enforces that all embedded resources opt-in to cross-origin embedding — required for cross-origin isolation features.
Learn more ▾ ▴
Cross-Origin-Embedder-Policy: require-corp ensures every embedded resource (script, iframe, image) explicitly allows being loaded cross-origin. Combined with COOP, this enables the cross-origin-isolated context that unlocks SharedArrayBuffer, high-resolution timers, and other powerful APIs.
Source: MDN / web.dev
This header discloses server technology (e.g. Express, PHP), helping attackers target known vulnerabilities. Remove it.
X-Powered-By: PHP/7.4.3 advertises your stack to attackers — disable it.
Learn more ▾ ▴
X-Powered-By and similar headers (X-AspNet-Version, X-Runtime) tell attackers which versions to target. Disable in your server/framework config: PHP `expose_php=Off`, ASP.NET `<httpRuntime enableVersionHeader="false">`, Express `app.disable('x-powered-by')`.
Source: OWASP
BPermissions-Policy6 directives, 2 missingREVIEW
Raw Header
Feature Permissions
A+TLS & CertificatesTLS 1.3, 7 checks passedPASS
HTTP/2 provides multiplexing and header compression for better performance.
HTTP/1.1 forces the browser to make sequential requests, multiplying latency on every page.
Learn more ▾ ▴
HTTP/2 (and HTTP/3) multiplex many requests over a single connection, eliminating head-of-line blocking. HTTP/1.1 forces the browser to either queue requests or open many parallel connections — both worse. Most modern web servers support HTTP/2 with one config line.
Source: MDN Web Docs
Certificate Chain
A+JS Library VulnerabilitiesNo known vulnerabilitiesPASS
No known JavaScript library vulnerabilities detected.
A+Information LeakageNo exposuresPASS
No sensitive files exposed — all paths returned 404.
| Path | Status | Category | Risk |
|---|---|---|---|
| /.git/HEAD | ✓ Not found | Version Control | — |
| /.git/config | ✓ Not found | Version Control | — |
| /.svn/entries | ✓ Not found | Version Control | — |
| /.env | ✓ Not found | Configuration | — |
| /.env.local | ✓ Not found | Configuration | — |
| /.env.production | ✓ Not found | Configuration | — |
| /wp-config.php | ✓ Not found | Configuration | — |
| /.htaccess | ✓ Not found | Configuration | — |
| /phpinfo.php | ✓ Not found | Debug | — |
| /server-status | ✓ Not found | Debug | — |
| /server-info | ✓ Not found | Debug | — |
| /.well-known/security.txt | ✓ Not found | Security Policy | — |
A+Email SecurityDMARC: rejectPASS
ACORS ConfigurationOrigin: https://techcrunch.comPASS
| Header | Value | Status |
|---|---|---|
| Access-Control-Allow-Origin | https://techcrunch.com | ✓ |
| Access-Control-Allow-Methods | * | ✓ |
Origin reflection test
Some servers mirror the request Origin header, which can be exploited. Test manually:
curl -sI -H "Origin: https://evil.com" <url> | grep -i access-control