Сторінки не надсилають заголовків щодо вбудовування у фрейми
У звітіPages lack X-Frame-Options and CSP frame-ancestors protection
clickjacking_protection_missing · Проблема
Ця порада з безпеки з’являється, коли сторінка, доступна для індексування, відповідає без заголовка X-Frame-Options і без frame-ancestors у заголовку Content-Security-Policy. Без жодного з них браузери не заважають іншим сайтам показувати сторінку у фреймі, а саме на це спирається клікджекінг. Додайте frame-ancestors або X-Frame-Options, якщо тільки сторінку не задумано для вбудовування.
Серйозність: До уваги. Порада з безпеки в розділі «Корисно знати». Розгляньте захист від вбудовування для сторінок, які не мають відкриватися у фреймах; перевірка наявності заголовків не робить висновків про ранжування.
Чому це важливо
Довідник web.dev із заголовків безпеки рекомендує X-Frame-Options для всіх документів, не призначених для вбудовування, і директиву frame-ancestors політики Content Security Policy для точнішого керування тим, хто може вбудовувати сторінку у фрейм.
Що зробити
- Перегляньте знахідку: у ній показано заголовки
X-Frame-Optionsі CSP сторінки так, як ми їх прочитали. - Додайте
frame-ancestors 'self'до заголовкаContent-Security-Policyабо'none', якщо сторінку ніколи не вбудовують у фрейм, чи надсилайтеX-Frame-Options: SAMEORIGINабоDENY. - Надсилайте його як заголовок відповіді:
frame-ancestorsу тезі<meta>не враховується.
Коли залишити як є: якщо сторінку задумано для вбудовування на інших сайтах, наприклад це віджет, можна залишити як є.
Що ми читаємо
Ми читаємо заголовки кінцевої відповіді кожної просканованої сторінки з власним user agent та її HTML, не виконуючи JavaScript. Оцінюються лише HTML-сторінки, доступні для індексування, що відповіли кодом 200: сторінки з noindex або з canonical на іншу адресу не фіксуються.
Сторінка фіксується, коли її відповідь узагалі не має заголовка X-Frame-Options і не має заголовка Content-Security-Policy з директивою frame-ancestors. Будь-яке значення X-Frame-Options знімає знахідку, навіть недійсне, як і будь-яке значення frame-ancestors, навіть *. frame-ancestors у тезі <meta> записується, але не враховується. Сторінки, заголовки чи HTML яких захоплено не повністю, не оцінюються.
Приклад і докази
Ілюстративний приклад — одна відповідь, а не реальний аудит.
https://bakery.example/account/ відповідає кодом 200 із такими заголовками:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Security-Policy: default-src 'self'Заголовка X-Frame-Options немає, а політика не має frame-ancestors, тому сторінка фіксується.
Content-Security-Policy: default-src 'self'; frame-ancestors 'self'Можливе виправлення: та сама політика з доданим frame-ancestors 'self'.
Підтвердити й перевірити знову
Перевірте самі: відкрийте заголовки відповіді сторінки в інструментах розробника вашого браузера й пошукайте X-Frame-Options, а також frame-ancestors у Content-Security-Policy.
Повторна перевірка: Повний аудит — запустіть новий аудит сайту. Знахідка закривається, коли сторінку знову проскановано з повними заголовками й HTML і вона має будь-який із двох заголовків. Вона також закривається, якщо сторінка стає noindex або називає канонічною іншу сторінку, без жодної зміни заголовків. Якщо сторінку не проскановано знову або вона відповідає кодом 404, знахідка залишається відкритою.
Обмеження та джерела
Перевірка бачить, чи є заголовок, а не те, чи він захищає: порожній чи недійсний X-Frame-Options або frame-ancestors * знімає знахідку. Вбудовування у фрейм не пробується в браузері, і читається лише кінцева відповідь, яку кожна сторінка дала нашому сканеру.
Упевненість: Висока, бо заголовки зчитуються безпосередньо з відповіді.
Джерела
- web.dev, Короткий довідник із заголовків безпеки — рекомендує X-Frame-Options для всіх документів, не призначених для вбудовування, і директиву CSP frame-ancestors для точнішого керування. Перевірено 28 вересня 2026.
Редакційна перевірка: 2 листопада 2026