Skip to main content
Back to blog

Посібник з SEO Крок 7: Безпека — Мінімальні вимоги Google у 2026 році

·12 min read·by LANGR SEO

Посібник з SEO Крок 7: Безпека

Це Крок 7 з 13-Крокового Посібника з SEO. Безпека — це не лише захист користувачів, але й безпосередній вплив на ваші позиції у пошуку. Google використовує HTTPS як сигнальний фактор з 2014 року, і ці очікування лише зростають.


Більшість власників сайтів сприймають безпеку як бінарну: "У нас є SSL, отже, ми в безпеці." Насправді Google оцінює десятки сигналі безпеки. Сайти, які належно налаштували заголовки безпеки, мають дійсні сертифікати і немає змішаного контенту, випереджають сайти з лише базовим SSL сертифікатом — за інших рівних умов.

Добра новина: більшість виправлень безпеки є одноразовими конфігураціями. Налаштуйте їх один раз, і вони назавжди захистять ваші позиції.

Конфігурація SSL

SSL (технічно TLS) шифрує з'єднання між вашим сервером і відвідувачами. З 2014 року Google чітко підтвердив HTTPS як фактор ранжування. У 2026 році відсутність HTTPS — це не лише проблема ранжування, а й Chrome помічає HTTP сайти як "Небезпечний" у адресному рядку, що руйнує довіру користувачів.

Вимоги для належного SSL:

| Вимога | Чому | Як перевірити | |--------|------|---------------| | Дійсний сертифікат | Сплив терміну = попередження браузера = відскок користувачів | Перевірте дату закінчення дії | | Повний ланцюг | Неповні ланцюги не працюють на деяких пристроях | Тест SSL Labs | | TLS 1.2+ | Старі версії мають відомі вразливості | Тест SSL Labs | | Немає SHA-1 | За застарілістю відхиляється браузерами | Деталі сертифіката | | Покриття SAN | www і non-www повинні бути обидва покриті | Деталі сертифіката | | Автооновлення | Запобігає катастрофам при закінченні терміну дії | Налаштування Let's Encrypt / постачальника |

Система оцінювання SSL:

100% = Дійсний сертифікат + Повний ланцюг + TLS 1.3 + Сильний шифр + Автооновлення
  0% = Прострочений або відсутній сертифікат

Типові помилки SSL:

  1. Сертифікат закінчує термін без попереджень — Налаштуйте моніторинг (Крок 6) щонайменше за 30 днів до закінчення терміну
  2. Неповний ланцюг сертифіката — Сервер повинен надсилати проміжні сертифікати, а не лише один
  3. Змішаний контент — Сторінка HTTPS завантажує ресурси HTTP (зображення, скрипти, таблиці стилів)
  4. Цикли перенаправлення — HTTP → HTTPS → HTTP, викликані некоректно налаштованим CDN/проксі
  5. Несумісність non-www та www — Сертифікат покриває один, але не інший

Швидка перемога: Пропустіть свій домен через SSL Labs (ssllabs.com/ssltest). Усе, що нижче рейтингу "A", має дієві проблеми. Більшість провайдерів хостингу виправляють це одним кліком.

Заголовки Безпеки

Заголовки безпеки — це заголовки HTTP-відповіді, які вказують браузерам, як діяти під час завантаження вашого сайту. Вони запобігають цілим категоріям атак — і їх перевіряють павуки Google.

Основні заголовки безпеки:

Політика Безпеки Контенту (CSP)

CSP — це найпотужніший заголовок безпеки. Він визначає, які саме ресурси (скрипти, стилі, зображення, шрифти) можна вантажити на ваших сторінках.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'none';

Що запобігає CSP:

  • Атаки міжсайтового сценарію (XSS)
  • Атаки ін'єкцій даних
  • Clickjacking (через frame-ancestors)
  • Несанкціоноване виконання скриптів (криптомайнери, інжектори реклами)

Стратегія впровадження CSP:

  1. Розпочніть з Content-Security-Policy-Report-Only (реєструє порушення без блокування)
  2. Моніторьте звіти протягом 1-2 тижнів
  3. Додайте до білого списку законні джерела
  4. Перейдіть у режим примусового виконання
  5. Додайте report-uri або report-to для тривалого реєстрування порушень

X-Frame-Options

Запобігає вбудовуванню вашого сайту в iframe на інших доменах (захист від clickjacking).

X-Frame-Options: DENY

Або, якщо вам потрібно дозволити вбудовування з одного походження:

X-Frame-Options: SAMEORIGIN

X-Content-Type-Options

Запобігає браузерам від визначення MIME-типів (інтерпретація файлів як різних типів, ніж заявлено).

X-Content-Type-Options: nosniff

Цей рядок запобігає атакам, де файл .jpg містить прихований JavaScript, який браузер може виконати.

Referrer-Policy

Контролює, скільки інформації про реферер надсилається, коли користувачі натискають посилання з вашого сайту.

Referrer-Policy: strict-origin-when-cross-origin

Це надсилає повний URL для запитів з одного походження, але лише походження (домени) для запитів з інших джерел. Балансує аналітичні потреби з конфіденційністю.

Permissions-Policy

Контролює, які функції браузера (камера, мікрофон, геолокація тощо) можуть використовуватися на вашому сайті.

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()

Вимкнення функцій, які ви не використовуєте, запобігає зловживанню з боку сторонніх скриптів.

Приклад впровадження заголовків (Next.js):

// next.config.js
module.exports = {
  async headers() {
    return [{
      source: '/(.*)',
      headers: [
        { key: 'X-Content-Type-Options', value: 'nosniff' },
        { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
        { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
        { key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
        { key: 'Strict-Transport-Security', value: 'max-age=31536000; includeSubDomains; preload' },
      ]
    }]
  }
}

Впровадження заголовків (Apache .htaccess):

Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Впровадження заголовків (Nginx):

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Швидка перемога: Додайте всі 5 заголовків вище до налаштувань вашого сервера. Це займає 5 хвилин і відразу покращує вашу безпеку будь-яким сканером.

HSTS Preload

HTTP Strict Transport Security (HSTS) вказує браузерам завжди використовувати HTTPS для вашого домену — навіть до першого запиту. Без HSTS перший візит на ваш сайт може ще використовувати HTTP (вразливий до перехоплень) до переадресації на HTTPS.

Заголовок HSTS:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Три директиви:

| Директива | Значення | |-----------|----------| | max-age=31536000 | Запам’ятати це на 1 рік (в секундах) | | includeSubDomains | Застосувати до всіх піддоменів також | | preload | Запит на включення в списки попередньої завантаження браузера |

Список HSTS preload:

Остаточний захист HSTS. Браузери постачають з вбудованим списком доменів, які завжди повинні використовувати HTTPS. Подача вашого домену на hstspreload.org означає:

  • Перші відвідувачі отримують HTTPS негайно (без переадресації HTTP → HTTPS)
  • Неможливо для атакуючих знизити з'єднання
  • Постійно (складно видалити після подачі)

Вимоги для HSTS preload:

  1. Дійсний HTTPS сертифікат
  2. Переадресація всіх HTTP на HTTPS (включаючи піддомену)
  3. Заголовок HSTS з max-age >= 31536000
  4. Заголовок HSTS включає includeSubDomains
  5. Заголовок HSTS включає preload
  6. Усі піддомени повинні підтримувати HTTPS

Попередження: Подавайте на preload тільки якщо ВСІ ваші піддомени підтримують HTTPS. Директива includeSubDomains означає, що будь-який піддомен лише з HTTP буде недоступний.

Швидка перемога: Якщо у вас вже є HTTPS на всіх піддоменах, додайте повний заголовок HSTS і подайте заявку на hstspreload.org. Обробка триває кілька тижнів, але захист є постійним.

Сканування вразливостей

Автоматизоване сканування вразливостей виявляє відомі проблеми безпеки в вашій технологічній стек-структурі до того, як атакуючі можуть їх використати.

Що перевіряє сканування вразливостей:

  • Застаріле програмне забезпечення: WordPress, плагіни, бібліотеки JavaScript з відомими CVEs
  • Відкриті файли: .env, .git, wp-config.php, резервні копії бази даних
  • Утеча інформації: Заголовки версій сервера, режим налагодження, трасування стеків
  • Дефолтні облікові дані: Сторінки адміністратора без авторизації, дефолтні паролі
  • Відкриті порти/послуги: Непотрібні служби, доступні з Інтернету
  • Точки ін'єкції: Форми без захисту CSRF, невалідовані введення

Типові вразливості за платформою:

| Платформа | Головна вразливість | Виправлення | |-----------|---------------------|-------------| | WordPress | Застарілі плагіни | Автооновлення + WAF | | Shopify | Дозволи сторонніх додатків | Аудит списку додатків щоквартально | | Next.js | Відкриті API маршрути | Авторизація middleware + обмеження запитів | | Статичні сайти | Неправильна конфігурація CDN | Перегляд правил кешування | | Кастомні | SQL-ін'єкція | Параметризовані запити |

Частота сканування:

  • Щодня: Автоматизоване поверхневе сканування (SSL, заголовки, відкриті файли)
  • Щотижня: Перевірка вразливостей залежностей (npm audit, сканер плагінів WordPress)
  • Щомісяця: Глибоке сканування з аутентифікацією
  • Після кожного розгортання: Перевірка регресії

Швидка перемога: Запустіть npm audit (Node.js) або перевірте список плагінів вашої CMS на наявність застарілих компонентів. Виправте критичні/високі проблеми негайно.

Змішаний Контент

Змішаний контент виникає, коли сторінка HTTPS завантажує ресурси (зображення, скрипти, таблиці стилів, iframe) через HTTP. Це частково руйнує шифрування та викликає попередження в браузерах.

Типи змішаного контенту:

| Тип | Складність | Приклад | Поведінка Браузера | |--------|------------|--------------------------------|-------------------------------| | Активний | Висока | HTTP скрипт, iframe, CSS | Блокується за замовчуванням | | Пасивний | Середня | HTTP зображення, відео, аудіо | Завантажується з попередженням |

Активний змішаний контент блокується сучасними браузерами — тобто ваші скрипти та стилі просто не завантажуються. Пасивний змішаний контент завантажується, але показує попередження безпеки.

Знаходження змішаного контенту:

  1. Відкрийте Chrome DevTools → Консоль
  2. Шукайте попередження "Змішаний контент"
  3. Як альтернатива, проскануйте за допомогою сканера (Screaming Frog, LANGR)

Типові джерела змішаного контенту:

  • Hardcoded http:// URL-адреси в контенті (блог-пости, описи продуктів)
  • Віджети третьої сторони, що завантажують HTTP-ресурси
  • Вбудований контент (стариє вбудування YouTube, віджети соціальних медіа)
  • CSS background-image з HTTP URL
  • Шрифти, завантажені через HTTP

Виправлення змішаного контенту:

<!-- Погано -->
<img src="http://example.com/image.jpg" />

<!-- Добре -->
<img src="https://example.com/image.jpg" />

<!-- Найкраще (протокольно-нейтральне, адаптується до протоколу сторінки) -->
<img src="//example.com/image.jpg" />

Виправлення бази даних (WordPress):

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://yourdomain.com', 'https://yourdomain.com');

Швидка перемога: Відкрийте свою домашню сторінку в Chrome, натисніть F12, перевірте вкладку Консоль на наявність попереджень щодо змішаного контенту. Виправте будь-які, що з’являються — це безпосередньо видно Google.

Ризики Сторонніх Скриптів

Кожен зовнішній скрипт, який ви навантажуєте, є потенційною відповідальністю за безпеку (та продуктивність). Сторонні скрипти можуть:

  • Бути скомпрометованими (атаки на ланцюг постачання)
  • Відслідковувати ваших користувачів без згоди (порушення GDPR)
  • Сповільнити ваш сайт (блокування рендерингу, затримка мережі)
  • Ламати функціональність (оновлення версій, збої)
  • Внедряти небажаний контент (скрипти реклами пішли не так)

Аудит ваших сторонніх скриптів:

| Скрипт | Необхідний? | Рівень ризику | Альтернатива | |-------------------------|--------------|----------------|-----------------------------| | Google Analytics | Часто так | Низький | Серверне відстеження | | Віджети чату | Можливо | Середній | Самостійно хостингові рішення | | Кнопки соціального обміну | Рідко | Середній | Статичні посилання | | A/B тестування | Іноді | Високий | Серверне тестування | | Пікселі ретаргетингу | Бізнес-рішення | Високий | Дані першої сторони | | CDN шрифти | Зручно | Низький | Шрифти самостійно |

Зниження ризику для важливих сторонніх скриптів:

  1. Цілісність підресурсу (SRI): Хеш-верифікація запобігає завантаженню підроблених скриптів
<script src="https://cdn.example.com/lib.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxAE+sO0..."
        crossorigin="anonymous"></script>
  1. Обмеження CSP: Дозволяйте лише скрипти з відомих доменів
  2. Закриті iframe: Ізольте віджети сторонніх постачальників
  3. Регулярні аудити: Щоквартальний перегляд усіх зовнішніх ресурсів
  4. Моніторинг: Оповістіть про нові зовнішні домени, що з'являються на ваших сторінках

Швидка перемога: Складіть список кожного тегу