Defaults.Exposed › Виправлення › HSTS (Strict-Transport-Security)
Як виправити HSTS (Strict-Transport-Security)
HSTS — це однорядкова інструкція, яку ваш сайт дає кожному браузеру: 'завжди повертайся до мене через захищене, зашифроване з'єднання — ніколи через незахищене'. Без нього ваш замок може бути тихо знятий у спільному Wi-Fi, і сам перший візит на ваш сайт лишається незахищеним.
Висновок для вашого бізнесу: Наявність HTTPS (замку) — це не те саме, що його примус. Без HSTS зловмисник у тій самій Wi-Fi-мережі, що й ваш клієнт, може тихо знизити з'єднання до звичайного, незашифрованого HTTP — перехоплюючи логіни, дані картки і заповнені форми, доки клієнт нічого не помічає. Ваш SSL-сертифікат, за який ви, можливо, платите, обходиться стороною. Виправлення безкоштовне і займає близько 15 хвилин для того, хто керує вашим сайтом.
Що це може вам коштувати
- Клієнти в кафе, готелі, аеропорту або на конференції можуть мати з'єднання з вашим сайтом тихо знижене і їхні дані прочитані — без жодного попередження на їхньому екрані.
- Ви заплатили за HTTPS і маєте замок, але без HSTS зловмисники можуть просто обійти його; сертифікат дає хибне відчуття безпеки.
- Сам перший візит на ваш сайт (до будь-якого перенаправлення на HTTPS) є слабким місцем, на яке нападають зловмисники — HSTS закриває його для кожного наступного візиту.
- Опитувальник безпеки, форма кіберстрахування або чеклист корпоративного покупця позначає 'немає HSTS' і затримує угоду до виправлення.
- Встановіть значення неправильно (занадто коротке) і ви отримаєте найгірше з обох світів: виглядає налаштованим, але майже не забезпечує реального захисту.
Чому це важливо. HTTPS захищає з'єднання після того, як воно зашифроване — але не примушує браузери використовувати його. Зловмисники використовують цю прогалину за допомогою 'зривання SSL': у будь-якій спільній мережі вони тихо тримають відвідувача на незахищеному HTTP, читаючи все. HSTS каже браузеру повністю відмовитися від звичайного HTTP для вашого домену на довгий час, тому прогалина закривається після першого візиту. Це один заголовок відповіді, безкоштовний для додавання, і в нашому оцінюванні він вартий реальних балів, бо відсутній або занадто короткий значення залишає кожного відвідувача у публічному Wi-Fi вразливим.
Що це таке — простими словами
У вас майже напевно є HTTPS — маленький замок у рядку браузера. Добре. Але ось частина, про яку майже нікому не кажуть: наявність HTTPS — це не те саме, що його примус.
HTTPS робить з’єднання зашифрованим після того, як браузер вирішить використовувати його. HSTS — скорочення від HTTP Strict Transport Security — це інструкція, що примушує браузер завжди використовувати його. Це один невидимий рядок, що ваш сайт надсилає кожному відвідувачу, що каже по суті:
«Відтепер, для мого домену, спілкуйся зі мною лише через захищене з’єднання. Ніколи через незахищене. Навіть не намагайся».
Браузер запам’ятовує це і підкоряється стільки часу, скільки ви вказуєте — зазвичай рік. Після першого захищеного візиту відвідувача їхній браузер просто відмовлятиметься завантажувати ваш сайт через звичайний, незашифрований HTTP, навіть якщо щось намагається це примусити.
Без HSTS правило «завжди використовуй захищену версію» не існує — і зловмисники точно знають, як використовувати цю прогалину.
Що це може коштувати вам
Ось реалістичні, повсякденні сценарії.
-
Оформлення замовлення в кафе. Клієнт відкриває ваш магазин у кафе через Wi-Fi і йде до каси. Зловмисник у тій самій мережі запускає безкоштовний, добре відомий інструмент, що тримає клієнта на звичайному HTTP замість HTTPS. Клієнт бачить те, що виглядає як ваш звичайний сайт — без попередження, без зламаного замку — і вводить дані своєї картки. Зловмисник читає кожне натискання клавіші. Ваш SSL-сертифікат нічого не зробив, бо з’єднанню ніколи не дозволили стати захищеним.
-
Мандрівний співробітник. Співробітник авторизується у вашу адміністративну панель або веб-пошту з готелю або аеропорту. Той самий трюк зниження перехоплює його ім’я користувача і пароль. Тепер зловмисник має шлях у ваш бізнес — не тому, що ваша парольна політика була слабкою, а тому, що сторінка авторизації була доступна через незахищений HTTP.
-
Угода, що зависла. Більший клієнт надсилає вам стандартний опитувальник безпеки перед підписанням. Одне запитання: «Чи застосовує ваш сайт HTTPS через HSTS?» Ваш IT-контакт має відповісти «ні», і процес закупівель призупиняється, поки ви поспіхом виправляєте безкоштовне 15-хвилинне налаштування, що тепер виглядає як тривожний сигнал перед покупцем.
-
Перевірка кіберстрахування або відповідності. Сканування страховика або аудитор, що перевіряє ваш стан захисту даних, позначає відсутній заголовок. Шифрування особистих даних є явним очікуванням за правилами захисту даних (GDPR Стаття 32), і «у нас є сертифікат, але ми не застосовуємо його» — слабка позиція.
-
Хибне відчуття безпеки. Ви платите за SSL, замок показується, і всі вважають, що сайт безпечний. Здебільшого так — поки клієнт перебуває у спільній мережі, що саме тоді, коли він найбільш вразливий і найменш помічає щось неправильне.
Наскрізна нитка: вартість — це реальна карта або логін реального клієнта, перехоплені в найгірший можливий момент, без жодного сигналу тривоги.
Що це насправді є
Коли браузер запитує сторінку вашого сайту, ваш сервер надсилає назад сторінку плюс кілька невидимих «заголовків» — додаткові інструкції, які браузер читає, але відвідувач ніколи не бачить. HSTS — один з таких заголовків:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Три частини мають значення:
max-age— як довго (у секундах) браузер повинен пам’ятати, що слід примусово використовувати HTTPS.31536000— один рік. Це серце: занадто коротко — і він майже не допомагає.includeSubDomains— розширює правило на кожен поддомен (shop.,app.,mail.тощо), а не лише на вашу головну адресу.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 для вбудовування в браузери. Це повністю закриває вікно першого візиту. Вважайте це обдуманим зобов’язанням — видалення домену зі списку повільне.
Поширені помилки
- Встановлення
max-ageзанадто короткого. Значення кількох хвилин або годин виглядає налаштованим, але майже не захищає — і наша перевірка вважає все менше дня невдачею. Використовуйте рік. - Вмикання
includeSubDomainsдо того, як поддомени готові до HTTPS. Якщо поддомен не повністю на HTTPS, «липке» правило може зробити його недоступним для відвідувачів. Спочатку перемістіть кожен поддомен на HTTPS. - Додавання HSTS, але без перенаправлення HTTP на HTTPS. HSTS передбачає, що відвідувачі доходять до захищеної версії; без перенаправлення перший візит непотрібно розкривається. Виправляйте обидва разом.
- Відразу переходити до
preload, щоб «бути ретельним». Preload важко скасувати. Заробляйте його поступово після стабільного однорічного заголовку — не поспішайте. - Припускаючи, що замок означає, що ви захищені. Замок і HSTS — різні речі. У вас може бути ідеальний сертифікат і все одно не пройти цю перевірку.
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 хвилин роботи.