Відповідь HTTPS встановлює cookie без Secure

У звітіCookies set over HTTPS without the Secure attribute

cookie_missing_secure_flag · Проблема

Коротка відповідь

Ця порада з безпеки з’являється, коли відповідь на вашому сайті з HTTPS встановлює cookie без атрибута Secure. Такий cookie може передаватися й через звичайне з’єднання http://, де він не зашифрований. Додайте Secure всюди, де встановлюється cookie.

Серйозність: До уваги. Порада з безпеки в розділі «Корисно знати». Перегляньте cookie без Secure, особливо сесійні; перевіряється захоплена декларація атрибута, а не поведінка браузера чи ранжування.

Чому це важливо

MDN пояснює, що cookie із Secure надсилається серверу, лише коли запит використовує схему https:, і застерігає, що сам Secure не захищає всього, що є в cookie.

Що зробити

  1. Перегляньте знахідку: у ній показано назву й атрибути cookie, але ніколи не його значення, і до десяти сторінок, що його встановлюють.
  2. Додайте Secure там, де встановлюється cookie: у вашому застосунку, налаштуваннях сесії вашого фреймворку, CDN або плагіні чи сервісі, який його встановлює.
  3. Тримайте сайт лише на HTTPS, щоб ніщо не залежало від cookie через http://.

Що ми читаємо

Ми читаємо заголовки Set-Cookie в кінцевій відповіді кожної просканованої сторінки HTTPS, із власним user agent і без входу. Зберігаються лише назва й атрибути кожного cookie; його значення ніколи не зберігається.

Cookie фіксується, коли він не має атрибута Secure. Сторінки, що встановлюють cookie з тією самою назвою, фіксуються разом, одна знахідка на назву. Якщо інший заголовок Set-Cookie не вдається розібрати, окремо розібраний незахищений cookie все одно дає позитивний доказ. Без такого позитивного доказу неповний перелік cookie залишає відому назву в стані невідомо й не може довести чистого результату.

Приклад і докази

Ілюстративний приклад — одна відповідь, а не реальний аудит.

https://bakery.example/ відповідає з:

HTTP/1.1 200 OK
Set-Cookie: basket=[redacted]; Path=/; HttpOnly; SameSite=Lax

Cookie basket не має атрибута Secure, тому він фіксується з цією сторінкою та іншими сторінками, що його встановлюють; його значення не записується.

Set-Cookie: basket=[redacted]; Path=/; Secure; HttpOnly; SameSite=Lax

Можливе виправлення: той самий cookie з доданим Secure.

Підтвердити й перевірити знову

Перевірте самі: відкрийте інструменти розробника вашого браузера, перезавантажте сторінку й прочитайте заголовки відповіді Set-Cookie або перегляньте список cookie, де показано, чи кожен із них Secure.

Повторна перевірка: Повний аудит — запустіть новий повний аудит. За повністю захоплених заголовків cookie знахідка для цієї назви cookie закривається, лише коли жодна наразі просканована сторінка HTTPS не встановлює цієї назви без Secure; нова сторінка, що встановлює ту саму назву без Secure, залишає її відкритою. Cookie, який не вдалося прочитати, залишає охоплення перевірки неповним, а інша назва незахищеного cookie може створити ще одну знахідку.

Обмеження та джерела

Читається лише кінцева відповідь кожної просканованої сторінки, без входу, тож cookie, встановлені на переспрямуваннях, скриптами, іншими файлами чи після входу, перевірка не бачить. Наш сканер надсилає назад отримані cookie, тож сервер може не встановлювати той самий cookie двічі, а список сторінок — це нижня межа. Перевірка не бачить, чи приймає або надсилає cookie браузер.

Упевненість: Висока, бо заголовок Set-Cookie зчитується безпосередньо.

Джерела

  • MDN, Заголовок Set-Cookie — пояснює, що cookie із Secure надсилається серверу лише із запитами, які використовують схему https:, і застерігає, що Secure не запобігає всякому доступу до того, що містить cookie. Перевірено 28 вересня 2026.

Редакційна перевірка: 2 листопада 2026