Security Headers Report
Grade D 52%
GET https://www.drupal.org
The hound’s verdict
Poor. Critical security headers are missing and the site is significantly exposed.
Security headers
- 2 pass
- 4 warning
- 4 fail
-
Strict-Transport-Security HSTS
12/15 12/15Tells browsers to only use HTTPS for all future requests. Prevents protocol downgrade attacks and cookie hijacking.
max-age=15552000; includeSubDomains; preload- max-age is less than one year. Consider raising it to 31536000 (one year) or more.
- includeSubDomains is set.
- preload is set, so the site is eligible for the HSTS preload list.
-
X-Frame-Options XFO
8/8 8/8Protects against clickjacking by controlling whether the site can be embedded in iframes. Largely superseded by CSP frame-ancestors but still widely supported.
SAMEORIGIN- SAMEORIGIN allows embedding only by pages on the same origin.
-
X-Content-Type-Options XCTO
8/8 8/8Prevents browsers from MIME-sniffing a response away from the declared content type, reducing exposure to drive-by download attacks.
nosniff- nosniff is set correctly.
-
Content-Security-Policy CSP
16/25 16/25The most powerful security header. It controls which resources the browser may load, which mitigates XSS, data injection and other code injection attacks.
frame-ancestors 'self'- default-src is missing, so browsers have no fallback directive.
- base-uri is missing. Without it, an attacker who can inject a base tag can hijack relative URLs.
- No 'unsafe-inline' was found.
- No 'unsafe-eval' was found.
- frame-ancestors is set, which controls iframe embedding at the CSP level.
-
Referrer-Policy RP
0/8 0/8Controls how much referrer information is sent with requests. Restricting it protects user privacy and avoids leaking sensitive URLs.
Not set- Referrer-Policy is missing. Browsers may send the full URL to third-party sites as the referrer.
RecommendedReferrer-Policy: strict-origin-when-cross-origin -
Permissions-Policy PP
4/8 4/8Controls access to browser features and APIs such as the camera, microphone and geolocation. Replaces the deprecated Feature-Policy header.
interest-cohort=()- "camera" is not controlled. Consider adding camera=() to turn it off.
- "microphone" is not controlled. Consider adding microphone=() to turn it off.
- "geolocation" is not controlled. Consider adding geolocation=() to turn it off.
- "payment" is not controlled. Consider adding payment=() to turn it off.
- Permissions-Policy is set.
-
X-XSS-Protection XXP
3/5 3/5Legacy header for the XSS filter in older browsers. Modern browsers ignore it and a strong CSP is preferred. A wrong value can introduce vulnerabilities.
Not set- X-XSS-Protection is not set. Modern browsers ignore it, but setting it to 0 is still recommended to avoid bugs in older browsers.
RecommendedX-XSS-Protection: 0 -
Cross-Origin-Embedder-Policy COEP
0/7 0/7Prevents a document from loading cross-origin resources that do not explicitly grant permission. Required for cross-origin isolation.
Not set- COEP is not set. It is required for cross-origin isolation, which enables features like SharedArrayBuffer.
RecommendedCross-Origin-Embedder-Policy: require-corp -
Cross-Origin-Opener-Policy COOP
0/7 0/7Isolates the browsing context group, which protects against cross-origin attacks such as XS-Leaks and Spectre.
Not set- COOP is not set. The browsing context is not isolated, which leaves the site open to XS-Leaks and Spectre-style attacks.
RecommendedCross-Origin-Opener-Policy: same-origin -
Cross-Origin-Resource-Policy CORP
0/7 0/7Says whether other sites may include the resource, which protects against some cross-origin information leaks and side-channel attacks.
Not set- CORP is not set. Other sites may be able to include your resources, which can enable information leaks.
RecommendedCross-Origin-Resource-Policy: same-origin
Version leaks
These response headers may reveal details about the server software and technology stack, which helps attackers plan an attack.
-
medium
Server
ApacheRemove or mask the Server header so it does not disclose the web server software and version.
-
medium
X-Generator
Drupal 11 (https://www.drupal.org)Remove the X-Generator header so it does not disclose your CMS and its version.
-
low
X-Drupal-Cache
HITThe X-Drupal-Cache header reveals that the site runs Drupal. Consider removing it in production.
-
low
X-Drupal-Dynamic-Cache
UNCACHEABLE (poor cacheability)The X-Drupal-Dynamic-Cache header reveals Drupal's caching internals. Consider removing it in production.
-
low
Via
1.1 varnishThe Via header reveals proxy server information. Consider masking it in production.
connection: keep-alive
content-length: 80237
cache-control: max-age=3600, public
content-language: en
content-type: text/html; charset=utf-8
etag: "1794765926-gzip"
expires: Sun, 19 Nov 1978 05:00:00 GMT
last-modified: Sun, 15 Nov 2026 18:05:26 GMT
server: Apache
x-drupal-cache: HIT
x-drupal-dynamic-cache: UNCACHEABLE (poor cacheability)
x-generator: Drupal 11 (https://www.drupal.org)
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
content-security-policy: frame-ancestors 'self'
permissions-policy: interest-cohort=()
strict-transport-security: max-age=15552000; includeSubDomains; preload
accept-ranges: bytes
date: Sun, 15 Nov 2026 18:45:02 GMT
via: 1.1 varnish
age: 792
x-served-by: cache-chi-klot8100023-CHI
x-cache: HIT
x-cache-hits: 1
x-timer: S1794768303.768331,VS0,VE1
vary: Cookie,Accept-Encoding,GeoIP-country,Origin