Что такое HTTPOnly cookie

Ответ

HTTPOnly cookie — это флаг, который можно установить для куки, чтобы предотвратить доступ к ней через JavaScript (через document.cookie). Это мера безопасности, защищающая от XSS-атак (Cross-Site Scripting), так как злоумышленник не сможет украсть куки, даже если внедрит вредоносный скрипт.

Пример установки HTTPOnly cookie на сервере (Node.js с Express):

res.cookie('sessionId', '12345', {
  httpOnly: true,
  secure: true, // рекомендуется для HTTPS
  sameSite: 'strict'
});

Особенности:

  • Доступно только в HTTP-запросах (серверу и браузеру)
  • Нельзя прочитать/изменить через JavaScript
  • Поддерживается всеми современными браузерами

Используется для хранения чувствительных данных, например, сессионных идентификаторов.

Ответ 18+ 🔞

А, слушай, смотри, вот эта штука — HTTPOnly cookie. Это ж, блядь, как замок на холодильнике от пьяного соседа по хате! Суть в чём: ты вешаешь на куку специальный флажок, и она становится невидимой и неприкосновенной для всякого там JavaScript'а. То есть никакой document.cookie её, сука, не достанет.

Зачем это, спросишь? А затем, ёпта, чтобы всякие мудаки, которые через XSS-атаки скрипты в страницы впихивают, не могли слить твои ценные печеньки! Представь, хранишь ты там сессионный ключ, а какой-нибудь пидарас шерстяной своим скриптом его выудит и — привет, твой аккаунт теперь его. А с HTTPOnly — хуй ему, а не кука. Украсть не сможет, хоть тресни.

Вот смотри, как это на сервере делается, например, на Node.js с Express:

res.cookie('sessionId', '12345', {
  httpOnly: true, // Вот он, волшебный флажок! Всё, теперь эта кука — невидимка для JS.
  secure: true,   // Это чтобы только по HTTPS летала, тоже безопасность, ебать её в сраку.
  sameSite: 'strict' // И это, чтобы со сторонних сайтов не приползала.
});

И что мы имеем в сухом остатке? Кука эта:

  • Живёт только в HTTP-запросах. Серверу видна, браузер её шлёт, а вот JavaScript'у — ни-ни, нихуя.
  • Прочитать или поменять её через код на странице — абсолютно невозможно. Прям вот ноль ебать.
  • И да, все нормальные браузеры это поддерживают, не какие-то древние говнолисты.

Короче, если у тебя там что-то важное, типа токена авторизации или ID сессии — ты обязан, блядь, вешать httpOnly: true. Это не просто рекомендация, это, сука, вопрос гигиены, как мыть руки после улицы! Иначе потом будешь охуевать, откуда у тебя аккаунты угнали.