Skip to main content

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.

51 / 98 points Audited Sunday, 15 November 2026 - 18:45

Security headers

  • 2 pass
  • 4 warning
  • 4 fail
  • Warning

    Strict-Transport-Security HSTS

    12/15 12/15

    Tells 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.
  • Pass

    X-Frame-Options XFO

    8/8 8/8

    Protects 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.
  • Pass

    X-Content-Type-Options XCTO

    8/8 8/8

    Prevents browsers from MIME-sniffing a response away from the declared content type, reducing exposure to drive-by download attacks.

    nosniff
    • nosniff is set correctly.
  • Warning

    Content-Security-Policy CSP

    16/25 16/25

    The 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.
  • Fail

    Referrer-Policy RP

    0/8 0/8

    Controls 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.
    Recommended
    Referrer-Policy: strict-origin-when-cross-origin
  • Warning

    Permissions-Policy PP

    4/8 4/8

    Controls 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.
  • Warning

    X-XSS-Protection XXP

    3/5 3/5

    Legacy 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.
    Recommended
    X-XSS-Protection: 0
  • Fail

    Cross-Origin-Embedder-Policy COEP

    0/7 0/7

    Prevents 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.
    Recommended
    Cross-Origin-Embedder-Policy: require-corp
  • Fail

    Cross-Origin-Opener-Policy COOP

    0/7 0/7

    Isolates 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.
    Recommended
    Cross-Origin-Opener-Policy: same-origin
  • Fail

    Cross-Origin-Resource-Policy CORP

    0/7 0/7

    Says 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.
    Recommended
    Cross-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

    Apache

    Remove 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

    HIT

    The 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 varnish

    The Via header reveals proxy server information. Consider masking it in production.

Back to top