Для чего используется атрибут HttpOnly у cookie?

«Для чего используется атрибут HttpOnly у cookie?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Атрибут HttpOnly — это флаг безопасности для HTTP-кук, который запрещает доступ к куке из клиентского JavaScript (через document.cookie).

Основная цель: Защита от кражи сессионных идентификаторов и токенов аутентификации при успешных XSS-атаках (межсайтовом скриптинге).

Пример установки HttpOnly куки в HTTP-ответе:

Set-Cookie: sessionId=abc123xyz; HttpOnly; Secure; SameSite=Strict

Сравнение доступа:

  • Без HttpOnly: Внедрённый вредоносный скрипт может украсть куку.
    // Злоумышленник может выполнить этот код при XSS
    const stolenCookie = document.cookie; // Возвращает все доступные куки
  • С HttpOnly: JavaScript не может прочитать или изменить эту куку, что сводит на нет многие XSS-атаки, направленные на кражу сессии.

Важно: HttpOnly не защищает от CSRF-атак. Для комплексной защиты его следует использовать вместе с атрибутами Secure (передача только по HTTPS) и SameSite (ограничение межсайтовых запросов).