Security

HTTP Headers

Перегляд response-headers і аудит security-policies.

URL http or https (default https). Up to 3 redirects are followed.
https://www.cloudflare.com/
Status: 200 HTTP/1.1 514 ms
B
Security grade?
Score
87 / 100
Status
200
Protocol?
HTTP/1.1
Latency?
514 ms
Redirect chain?
  1. 301 — https://cloudflare.com/
  2. 200 — https://www.cloudflare.com/
Security audit
  • pass Strict-Transport-Security? +25/25
    HSTS is set with a long max-age — browsers will refuse plaintext HTTP for the next 6+ months.
    max-age=31536000; includeSubDomains
  • warn Content-Security-Policy? +12/25
    CSP allows both unsafe-inline and unsafe-eval — XSS protection is largely defeated.
    default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://static.cloudflareinsights.com https://static-staging.cloudflareinsights.com https://challenges.cloudflare.com https://*.onetrust.com https://cdn.cookielaw.org https://ot.www.cloudflare.com https://www.googletagmanager.com https://tagmanager.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://adservice.google.com https://cdn.bizible.com https://js.adsrvr.org https://*.marketo.net https://platform.twitter.com https://static.ads-twitter.com https://scripts.demandbase.com https://tag.demandbase.com https://*.6sc.co https://*.qualified.com https://snap.licdn.com https://bat.bing.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://*.analytics.google.com https://analytics.google.com https://*.doubleclick.net https://www.googleadservices.com https://translate.googleapis.com https://cdn.bizible.com https://js.adsrvr.org https://*.marketo.net https://ads-twitter.com https://analytics.twitter.com https://*.twimg.com https://api.demandbase.com https://scripts.demandbase.com https://tag.demandbase.com https://tag-logger.demandbase.com https://api.company-target.com https://*.6sc.co https://epsilon.6sense.com https://*.qualified.com wss://*.qualified.com https://*.ads.linkedin.com https://www.linkedin.com https://bat.bing.com https:; frame-src https://*.adsrvr.org https://*.cloudflare.com https://*.videodelivery.net https://*.cloudflarestream.com https://www.googletagmanager.com https://*.qualified.com https://td.doubleclick.net https://bid.g.doubleclick.net https://9309168.fls.doubleclick.net https://9973066.fls.doubleclick.net https://s.company-target.com; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; worker-src 'self' blob:; child-src 'self' blob:; upgrade-insecure-requests
  • pass X-Frame-Options / frame-ancestors? +15/15
    Clickjacking is blocked — page cannot be embedded in third-party iframes.
    SAMEORIGIN
  • pass X-Content-Type-Options +10/10
    nosniff is set — browsers will not MIME-sniff non-script responses as JavaScript.
    nosniff
  • pass Referrer-Policy? +15/15
    Referrer policy keeps full URLs from leaking to third-party origins.
    strict-origin-when-cross-origin
  • pass Permissions-Policy? +10/10
    Permissions policy restricts browser features (camera, mic, geolocation) for embeds.
    geolocation=(), camera=(), microphone=()
Response headers
date: Mon, 27 Jul 2026 19:44:57 GMT content-type: text/html; charset=utf-8 transfer-encoding: chunked connection: keep-alive link: <https://www.cloudflare.com/.well-known/agents.json>; rel="api-catalog", <https://www.cloudflare.com/.well-known/webmcp.json>; rel="service-desc", <https://www.cloudflare.com/openapi.json>; rel="service-desc", <https://www.cloudflare.com/llms.txt>; rel="service-doc", <https://www.cloudflare.com/sitemap.xml>; rel="sitemap", </fonts/Kunst%20Grotesk%20Regular.woff2>; rel=preload; as=font; type="font/woff2"; crossorigin, </fonts/Kunst%20Grotesk%20Medium.woff2>; rel=preload; as=font; type="font/woff2"; crossorigin, <https://ot.www.cloudflare.com>; rel=preconnect; crossorigin, <https://imagedelivery.net>; rel=preconnect; crossorigin, </static/hero-poster.avif>; rel=preload; as=image; type="image/avif"; fetchpriority=high cache-control: public, max-age=10, s-maxage=10 strict-transport-security: max-age=31536000; includeSubDomains cf-placement: remote-MXP content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://static.cloudflareinsights.com https://static-staging.cloudflareinsights.com https://challenges.cloudflare.com https://*.onetrust.com https://cdn.cookielaw.org https://ot.www.cloudflare.com https://www.googletagmanager.com https://tagmanager.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://adservice.google.com https://cdn.bizible.com https://js.adsrvr.org https://*.marketo.net https://platform.twitter.com https://static.ads-twitter.com https://scripts.demandbase.com https://tag.demandbase.com https://*.6sc.co https://*.qualified.com https://snap.licdn.com https://bat.bing.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://*.analytics.google.com https://analytics.google.com https://*.doubleclick.net https://www.googleadservices.com https://translate.googleapis.com https://cdn.bizible.com https://js.adsrvr.org https://*.marketo.net https://ads-twitter.com https://analytics.twitter.com https://*.twimg.com https://api.demandbase.com https://scripts.demandbase.com https://tag.demandbase.com https://tag-logger.demandbase.com https://api.company-target.com https://*.6sc.co https://epsilon.6sense.com https://*.qualified.com wss://*.qualified.com https://*.ads.linkedin.com https://www.linkedin.com https://bat.bing.com https:; frame-src https://*.adsrvr.org https://*.cloudflare.com https://*.videodelivery.net https://*.cloudflarestream.com https://www.googletagmanager.com https://*.qualified.com https://td.doubleclick.net https://bid.g.doubleclick.net https://9309168.fls.doubleclick.net https://9973066.fls.doubleclick.net https://s.company-target.com; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; worker-src 'self' blob:; child-src 'self' blob:; upgrade-insecure-requests cross-origin-opener-policy: unsafe-none cross-origin-resource-policy: cross-origin permissions-policy: geolocation=(), camera=(), microphone=() referrer-policy: strict-origin-when-cross-origin x-content-type-options: nosniff x-frame-options: SAMEORIGIN x-served-by: marketing-site x-xss-protection: 1; mode=block x-rm: GW vary: accept-encoding set-cookie: __cf_bm=47IAtw0Fy6BY5f6w3WzOF6iHw37t4_HkeNq7OwPJ7lM-1785181497.713027-1.0.1.1-rkAwZCpOUFtSIsMZRP8c9HYFFnXhpmiiqf8KDBosOGmSMXhzJZSCub_l42sWuVhCSbiTcQYQZ1JsHe_Hn62nLR.Eq7WTVcsCs0MvRK68QGWKMqcg4TK50C3h7YhMmDsbQ.ns3Ey0YLiaRAD7ZeJkyA; HttpOnly; SameSite=None; Secure; Path=/; Domain=www.cloudflare.com; Expires=Mon, 27 Jul 2026 20:14:57 GMT report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=OzB3YshiQ5vVRw0hxV%2B0E3PN5pZn3U6Ki%2Bbz%2FofGX%2B1bq%2BU3HlfAqTHN5IwlQLFFQM2txV5xkVJxHH4Y0CB2e%2BeyHbTgrw6GdLJoCdqcw5%2FOwm8yPs9CWJOS%2FWiptSZXXOsvcw%3D%3D"}]} nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800} server: cloudflare cf-ray: a21e2448be5adc89-FRA alt-svc: h3=":443"; ma=86400
Що означає кожне поле?

Опис полів

Оцінка безпеки

Сумарний бал по заголовках безпеки, де HSTS і CSP важать найбільше. A+ — усі п'ять заголовків правильно налаштовані; F — жодного. Використовуйте оцінку як швидкий маркер, далі — деталі по кожному заголовку нижче.

HTTP-протокол

HTTP/1.1 — текстовий legacy-протокол. HTTP/2 мультиплексує стріми по одному TCP-з'єднанню (стиснення заголовків, server push). HTTP/3 — поверх QUIC (UDP), краще на нестабільних/мобільних мережах. Сучасний сервер має віддавати щонайменше HTTP/2.

Затримка

Round-trip від нашого сервера до цілі до першого байта відповіді. Це не CDN-бенчмарк — географічна відстань, TLS handshake і прогрів кешу всі впливають. Використовуйте як грубий сигнал свіжості, а не як production-метрику.

Ланцюжок редиректів

Довгий ланцюжок (3+ редиректи) шкодить SEO й перформансу. Класичний випадок — <code>http://example.com → https://example.com → https://www.example.com</code>: два стрибки, прийнятно. Більше п'яти — конфігураційна помилка.

Strict-Transport-Security (HSTS)

HSTS каже браузеру: "більше не з'єднуйся зі мною по plain HTTP". <code>max-age=15768000</code> (6 місяців) — практичний мінімум; <code>includeSubDomains; preload</code> опціонально включає у глобальний preload-list. Після preload не можна "вийти" протягом ~12 місяців — спершу налаштуйте все інше.

Content-Security-Policy (CSP)

CSP визначає, звідки можуть вантажитися script / style / image / frame. <code>default-src 'self'</code> — здоровий baseline; nonce-based <code>script-src</code> — найжорсткіший варіант. Уникайте <code>unsafe-inline</code> і <code>unsafe-eval</code> — вони нівелюють захист від XSS. Використовуйте report-uri / report-to для моніторингу.

X-Frame-Options

Поставте <code>DENY</code>, щоб заборонити фрейми взагалі, або <code>SAMEORIGIN</code> для дозволу лише same-origin. Сучасний еквівалент — <code>frame-ancestors</code> у CSP (багатше синтаксис) — будь-який із двох задовольняє наш audit.

Referrer-Policy

Контролює, що браузер шле у <code>Referer</code>. <code>strict-origin-when-cross-origin</code> (дефолт у сучасних браузерах) — гарний baseline: повний URL для same-origin, лише origin для cross-origin, нічого при downgrade. <code>no-referrer</code> прибирає взагалі; <code>unsafe-url</code> ллє повні URL — уникайте.

Permissions-Policy

Спадкоємець Feature-Policy. Дозволяє дозволити / заборонити браузерні API per-origin: <code>camera=(), microphone=(), geolocation=(self)</code>. Радше defense-in-depth; примусово застосовується до iframe — безпечніша поведінка для вбудованого контенту.

X-Content-Type-Options: nosniff

Без цього заголовка браузер може виконати JSON-відповідь як JavaScript, якщо "виглядає як код". <code>X-Content-Type-Options: nosniff</code> робить декларований Content-Type обов'язковим. Дешевий заголовок, завжди безпечно ввімкнути — немає вагомих причин не ставити.

Про цей інструмент

HTTP Headers завантажує вашу URL справжнім HTTPS-запитом, захоплює кожен заголовок у відповіді (та кожній проміжній відповіді на будь-якому redirect-ланцюзі) і прогонить результат через security-аудит, що покриває сучасні hardening-заголовки: Strict-Transport-Security, Content-Security-Policy, X-Frame-Options / CSP frame-ancestors, X-Content-Type-Options, Referrer-Policy та Permissions-Policy. Кожен заголовок перевіряється на присутність, осмисленість значення і best-practice-пропуски.

Окрім аудиту ми перелічуємо кожен заголовок дослівно, щоб ви могли підтвердити caching-політику (Cache-Control, ETag, Vary), CDN-трасування (CF-Ray, X-Cache, X-Served-By), компресію (Content-Encoding: br/gzip) та будь-які кастомні заголовки, що видає ваш стек. HTTP-метод (GET або HEAD), узгоджена HTTP-версія (HTTP/1.1, HTTP/2, HTTP/3) і TLS-версія повідомляються в request-барі.

Коли використовувати цей інструмент

  • Security-hardening. Перед запуском підтвердіть, що HSTS, CSP та решта виставлені з безпечними значеннями — Mozilla Observatory baseline як мінімум.
  • Cache-дебаг. Подивіться, який саме Cache-Control і Vary видає ваш CMS чи фреймворк — типова причина «стара версія застрягла».
  • Аудити redirect-ланцюгів. Виявляйте випадкові 302-then-301 ланцюги, HTTP-to-HTTPS-to-other-host петлі та брак канонікалізації.
  • Поведінка CDN. Підтвердіть, що Cloudflare/Fastly/CloudFront справді кешує те, що ви думаєте, прочитавши Age, X-Cache та CDN-специфічні заголовки.

Що покриває наш security-аудит

Для кожного з шести hardening-заголовків ми повідомляємо: присутній чи відсутній, фактичне значення та короткий вердикт («good», «needs tightening», «vulnerable»). HSTS без includeSubDomains, CSP з unsafe-inline або Referrer-Policy за дефолтом — маркуються. Ми ніколи не кажемо «ідеальну» політику, бо кожен сайт інший, але кажемо, які крутилки досі на заводських налаштуваннях.

Часті запитання

Що таке HSTS і чому це важливо?

Strict-Transport-Security каже браузеру «завжди використовуй HTTPS для цього домену, навіть якщо користувач набрав http:// або клікнув на http://-посилання». Виставлений з розумним max-age (зазвичай 31536000 = 1 рік), він запобігає SSL-stripping-атакам на наступних візитах. Додавання includeSubDomains розширює захист на кожен субдомен — сильний дефолт для більшості сайтів, але переконайтеся, що всі вони справді підтримують HTTPS.

Моя CSP відсутня — наскільки це небезпечно?

Без CSP будь-яка XSS-дірка на вашому сайті виконується на повну: може вивести cookies, завантажити attacker-controlled скрипти або переписати DOM. Стартова CSP default-src 'self' блокує найпоширеніші XSS-payloads (inline-скрипти, зовнішні script-завантаження) за майже нульовою ціною. Жорсткіші політики, що повністю забороняють inline-скрипти, вимагають рефакторингу, але дають значно сильніший захист.

Чи слідуєте за редиректами?

Так — до п'яти хопів. Кожен крок показано з його методом, статусом, location і заголовками, щоб ви могли виявити mixed-protocol хопи (HTTP→HTTPS), брак канонікалізації (apex vs www) або випадкові петлі. Більшість продакшн-сайтів мають редиректити максимум один раз (HTTP → HTTPS), потім віддавати контент; більше двох хопів — зазвичай ознака rewrite-правил, що перекриваються.

Чому інструмент показує HTTP/2, навіть коли я налаштував HTTP/3?

HTTP/3 (QUIC over UDP) вимагає, щоб клієнт opt-in через Alt-Svc-заголовок на першому коннекті. Наш checker використовує HTTP/2 over TCP за замовчуванням, як і більшість HTTP-клієнтів сьогодні; якщо ваш сервер анонсує HTTP/3 в Alt-Svc, ви побачите цей заголовок у результаті, але сама відповідь усе одно йде по HTTP/2. Присутність Alt-Svc — це правильна річ, на яку дивитись.