Что такое HTTP-only cookie и в чем его назначение?

Ответ

HTTP-only cookie — это cookie, к которому нельзя получить доступ через JavaScript с помощью document.cookie. Он передается только по протоколу HTTP(S) между клиентом и сервером.

Основное назначение — защита от XSS-атак (Cross-Site Scripting). Если злоумышленник внедрит вредоносный скрипт на страницу, он не сможет украсть cookie с сессионным токеном, так как браузер заблокирует доступ к нему из JavaScript.

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

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  // Устанавливаем cookie с флагом httpOnly
  res.cookie('session_token', 'secret_value', {
    httpOnly: true, // Ключевой флаг
    secure: true,   // Рекомендуется использовать вместе с HTTPS
    sameSite: 'Strict' // Дополнительная защита от CSRF
  });
  res.send('Cookie has been set!');
});

app.listen(3000);

Ключевые моменты:

  • Принцип работы: Флаг HttpOnly в заголовке Set-Cookie указывает браузеру ограничить доступ к cookie.
  • Безопасность: Значительно снижает риск кражи сессии через XSS.
  • Использование: Является стандартом для хранения конфиденциальных данных, таких как идентификаторы сессий или токены аутентификации.