Defaults.Exposed

Defaults.ExposedВиправлення › HSTS (Strict-Transport-Security)

Як виправити HSTS (Strict-Transport-Security)

HSTS — це однорядкова інструкція, яку ваш сайт дає кожному браузеру: 'завжди повертайся до мене через захищене, зашифроване з'єднання — ніколи через незахищене'. Без нього ваш замок може бути тихо знятий у спільному Wi-Fi, і сам перший візит на ваш сайт лишається незахищеним.

Висновок для вашого бізнесу: Наявність HTTPS (замку) — це не те саме, що його примус. Без HSTS зловмисник у тій самій Wi-Fi-мережі, що й ваш клієнт, може тихо знизити з'єднання до звичайного, незашифрованого HTTP — перехоплюючи логіни, дані картки і заповнені форми, доки клієнт нічого не помічає. Ваш SSL-сертифікат, за який ви, можливо, платите, обходиться стороною. Виправлення безкоштовне і займає близько 15 хвилин для того, хто керує вашим сайтом.

Що це може вам коштувати

Чому це важливо. HTTPS захищає з'єднання після того, як воно зашифроване — але не примушує браузери використовувати його. Зловмисники використовують цю прогалину за допомогою 'зривання SSL': у будь-якій спільній мережі вони тихо тримають відвідувача на незахищеному HTTP, читаючи все. HSTS каже браузеру повністю відмовитися від звичайного HTTP для вашого домену на довгий час, тому прогалина закривається після першого візиту. Це один заголовок відповіді, безкоштовний для додавання, і в нашому оцінюванні він вартий реальних балів, бо відсутній або занадто короткий значення залишає кожного відвідувача у публічному Wi-Fi вразливим.

Що це таке — простими словами

У вас майже напевно є HTTPS — маленький замок у рядку браузера. Добре. Але ось частина, про яку майже нікому не кажуть: наявність HTTPS — це не те саме, що його примус.

HTTPS робить з’єднання зашифрованим після того, як браузер вирішить використовувати його. HSTS — скорочення від HTTP Strict Transport Security — це інструкція, що примушує браузер завжди використовувати його. Це один невидимий рядок, що ваш сайт надсилає кожному відвідувачу, що каже по суті:

«Відтепер, для мого домену, спілкуйся зі мною лише через захищене з’єднання. Ніколи через незахищене. Навіть не намагайся».

Браузер запам’ятовує це і підкоряється стільки часу, скільки ви вказуєте — зазвичай рік. Після першого захищеного візиту відвідувача їхній браузер просто відмовлятиметься завантажувати ваш сайт через звичайний, незашифрований HTTP, навіть якщо щось намагається це примусити.

Без HSTS правило «завжди використовуй захищену версію» не існує — і зловмисники точно знають, як використовувати цю прогалину.

Що це може коштувати вам

Ось реалістичні, повсякденні сценарії.

  1. Оформлення замовлення в кафе. Клієнт відкриває ваш магазин у кафе через Wi-Fi і йде до каси. Зловмисник у тій самій мережі запускає безкоштовний, добре відомий інструмент, що тримає клієнта на звичайному HTTP замість HTTPS. Клієнт бачить те, що виглядає як ваш звичайний сайт — без попередження, без зламаного замку — і вводить дані своєї картки. Зловмисник читає кожне натискання клавіші. Ваш SSL-сертифікат нічого не зробив, бо з’єднанню ніколи не дозволили стати захищеним.

  2. Мандрівний співробітник. Співробітник авторизується у вашу адміністративну панель або веб-пошту з готелю або аеропорту. Той самий трюк зниження перехоплює його ім’я користувача і пароль. Тепер зловмисник має шлях у ваш бізнес — не тому, що ваша парольна політика була слабкою, а тому, що сторінка авторизації була доступна через незахищений HTTP.

  3. Угода, що зависла. Більший клієнт надсилає вам стандартний опитувальник безпеки перед підписанням. Одне запитання: «Чи застосовує ваш сайт HTTPS через HSTS?» Ваш IT-контакт має відповісти «ні», і процес закупівель призупиняється, поки ви поспіхом виправляєте безкоштовне 15-хвилинне налаштування, що тепер виглядає як тривожний сигнал перед покупцем.

  4. Перевірка кіберстрахування або відповідності. Сканування страховика або аудитор, що перевіряє ваш стан захисту даних, позначає відсутній заголовок. Шифрування особистих даних є явним очікуванням за правилами захисту даних (GDPR Стаття 32), і «у нас є сертифікат, але ми не застосовуємо його» — слабка позиція.

  5. Хибне відчуття безпеки. Ви платите за SSL, замок показується, і всі вважають, що сайт безпечний. Здебільшого так — поки клієнт перебуває у спільній мережі, що саме тоді, коли він найбільш вразливий і найменш помічає щось неправильне.

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

Що це насправді є

Коли браузер запитує сторінку вашого сайту, ваш сервер надсилає назад сторінку плюс кілька невидимих «заголовків» — додаткові інструкції, які браузер читає, але відвідувач ніколи не бачить. HSTS — один з таких заголовків:

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

Три частини мають значення:

Чому «перший візит» важливий

HSTS має одне вроджене обмеження: браузер підкоряється правилу лише після того, як побачив заголовок принаймні один раз. Тому перше з’єднання абсолютно нового відвідувача все одно є невеликим вікном вразливості. Дві речі звужують його: перенаправлення HTTP на HTTPS (що швидко переводить їх на захищену версію) і preload (що повністю прибирає вікно).

Як виглядає «добре» і як оцінюється

Наша перевірка читає ваш активний заголовок і оцінює max-age:

Значення max-ageЩо це означаєРезультат
1 рік або більше (≥ 31536000)Відмінно — рекомендоване налаштуванняПовний бал
6 місяців або більше (≥ 15768000)Добре, але не повний рікЧастковий
1 день або більше (≥ 86400)Слабко — занадто коротко для надійностіНизький / частковий
Менше 1 дня або відсутній заголовокФактично без захистуНевдача (висока серйозність)

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

Як це виправити (безкоштовно, ~15 хвилин)

Передайте цей розділ тому, хто керує вашим сайтом — вашому IT-фахівцю, веб-розробнику або підтримці хостингу. Виправлення безкоштовне. Це один заголовок або перемикач у вашій платформі хостингу. Нічого купувати.

Одне важливе правило порядку спочатку: HSTS є «липким» — щойно увімкнено, браузери відмовлятимуться від звичайного HTTP для вашого домену на весь max-age. Тому підтвердіть, що HTTPS правильно працює на вашому основному сайті і на кожному поддомені перш ніж вмикати його широко. Безпечний шлях: тестуйте з коротким значенням → підтверджуйте, що нічого не ламається → піднімайте до року.

Крок 1 — Переконайтеся, що HTTPS вже скрізь працює

Відвідайте ваш сайт і ключові поддомени через https:// і підтвердіть, що вони завантажуються правильно з дійсним сертифікатом. Також підтвердіть, що звичайні http:// запити перенаправляються на https://. (Якщо ні, спочатку виправте перенаправлення HTTP на HTTPS — HSTS передбачає, що воно є на місці.)

Крок 2 — Додайте заголовок (оберіть вашу платформу)

Cloudflare (або подібний CDN): Найлегше. Перейдіть до SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) і увімкніть його. Встановіть Max-Age на 6 або 12 місяців і увімкніть «Apply HSTS policy to subdomains», як тільки впевнені, що всі поддомени на HTTPS.

Nginx: додайте всередині вашого server блоку HTTPS:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Apache: переконайтеся, що mod_headers увімкнено, потім додайте до вашого HTTPS virtual host:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Microsoft IIS: додайте до web.config всередині <customHeaders>:

<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />

Примітка Google Workspace / Microsoft 365: вони забезпечують вашу пошту, а не хостинг вашого сайту — HSTS встановлюється там, де фактично знаходиться ваш публічний сайт (ваш CDN, веб-сервер або конструктор сайтів), а не в адміністративній консолі Workspace/365.

Крок 3 — Тестуйте мало, потім підтверджуйте

Починайте з max-age=300 (5 хвилин). Підтвердіть, що сайт все ще ідеально завантажується скрізь. Потім піднімайте до max-age=31536000 (один рік). Це налаштування для повного балу.

Крок 4 (необов’язково, золотий стандарт) — preload

Коли ви впевнені і запускали однорічний заголовок з includeSubDomains деякий час, ви можете надіслати ваш домен на hstspreload.org для вбудовування в браузери. Це повністю закриває вікно першого візиту. Вважайте це обдуманим зобов’язанням — видалення домену зі списку повільне.

Поширені помилки

FAQ

У нас вже є HTTPS і замок показується. Хіба цього не достатньо?

Ні — і це найпоширеніше непорозуміння. Замок означає, що з'єднання МОЖЕ бути зашифрованим; він не примушує браузери використовувати зашифровану версію. Без HSTS зловмисник у тій самій мережі може тримати відвідувача на звичайному HTTP (це називається зриванням SSL) і читати все, що вони вводять, тоді як клієнт бачить звичайний вигляд сайту. HSTS — це інструкція, що робить 'лише зашифровано' обов'язковим. HTTPS без HSTS — замкнені двері, що насправді не защіпнуті.

Це дорого або ризиковано вмикати?

Саме виправлення безкоштовне — це один рядок у вашому веб-сервері або перемикач у вашому CDN — і займає близько 15 хвилин. Одне реальне застереження: HSTS є «липким». Щойно браузер побачить його, він відмовлятиметься від звичайного HTTP для вашого домену на стільки часу, скільки ви вказали. Тому ви маєте бути впевнені, що HTTPS правильно працює на вашому основному сайті І на кожному поддомені, перш ніж вмикати його широко. Починайте з короткого тестового значення, підтверджуйте, що нічого не ламається, потім піднімайте до року. У такому порядку ризик мінімальний.

Як виглядає 'добре'?

Max-age принаймні один рік (31536000 секунд). Наша перевірка дає повний бал при одному році або більше, часткові бали при шести місяцях, слабкі/часткові при одному дні, і вважає все менше дня фактично відсутнім. Найсильніше налаштування також додає includeSubDomains (охоплює shop.yoursite.com, app.yoursite.com тощо) і preload (бекає захист у браузери, щоб навіть перший візит був безпечним).

Що таке 'preload' і чи нам він потрібен?

HSTS захищає відвідувача ПІСЛЯ того, як їхній браузер побачив заголовок принаймні один раз — тому перший запит абсолютно нового відвідувача все одно є невеликим вікном. Список preload HSTS, вбудований в Chrome, Firefox, Safari і Edge, закриває це вікно, розсилаючи ваш домен браузерам заздалегідь. Це необов'язково і трохи більше зобов'язань (видалення повільне), але це золотий стандарт. Для більшості малих бізнесів max-age на один рік з includeSubDomains вже є сильним, безпечним результатом; preload — наступний крок після стабілізації.

Ми на Squarespace / Wix / Shopify — чи нам взагалі потрібно щось робити?

Більшість повністю керованих конструкторів сайтів (Squarespace, Wix, Shopify і подібні) застосовують HTTPS і часто встановлюють HSTS автоматично — тому ви можете вже проходити без жодних дій. Виняток — коли ви використовуєте власний домен або CDN перед вашим сайтом; тоді налаштування може випасти між щілинами. Запустіть перевірку: якщо вона проходить, ви готові. Якщо позначає, виправлення — перемикач у налаштуваннях SSL/безпеки вашої платформи або один рядок у вашому CDN.

Якщо ми не виправимо, це знижує нашу оцінку?

Так. HSTS — це оцінюваний захід веб-безпеки, а не інформаційний — відсутній або занадто короткий заголовок коштує балів і оцінюється як висока серйозність, бо він безпосередньо розкриває дані ваших відвідувачів у спільних мережах. Це також одні з найдешевших балів для відновлення: один безкоштовний заголовок, близько 15 хвилин роботи.