Cookie¶
Cookie-файлы позволяют сохранять на стороне клиента некоторые данные в течении заданного интервала времени, которые при смене страницы или повторном заходе на сайт помогают идентифицировать пользователя и, например, помогают восстановить состояние предыдущей сессии.
Несмотря на то, что сегодня существует достаточно хорошо зарекомендовавшая себя альтернатива в виде локального хранилища (Local Storage), cookie-файлы все еще широко распространены и играют в Интернете важную роль.
Особенности cookie-файлов:
- содержимое полностью открыто и доступно клиенту для просмотра;
- файлы могут быть удалены клиентом, либо заблокированы клиентом в любой момент;
- часто cookie-файлы подделываются злоумышленниками или используются для XSS-атак.
В Node.js cookie управляются двумя методами объекта ответа:
cookie()
- устанавливает значение по ключу;clearCookie()
- удаляет по заданному ключу значение у клиента, если ключ не задан - удаляет все.
Но для работы с ними сперва необходимо установить модуль cookie-parser
, который предоставляет функцию промежуточной обработки для корректной работы cookie в Express.
1 |
|
Теперь рассмотрим пример использования в Node.js cookie.
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Первым параметром функции промежуточной обработки cookie-parser передается секретный ключ, который используется в целях безопасности для шифрования значений файлов перед их отправкой клиенту. Для получения значений cookie с клиента необходимо обратиться к одноименному свойству объекта запроса.
Во время задания значения файла методу cookie()
необязательным третьим параметром можно передать объект настроек со следующими свойствами:
domain
- управляет поддоменами, на которых могут использоваться cookie;path
- описание маршрута, на который распространяется действие cookie;maxAge
- определяет время жизни файла в миллисекундах;secure
- булевое значение, еслиtrue
, то файлы будут отправляться только по протоколуHTTPS
;httpOnly
- булевое значение, установка вtrue
означает, что файлы будут изменяться только сервером;signed
- булевое значение, еслиtrue
, то cookie-файл будет подписан.
1 2 3 4 |
|
Подписанные cookie-файлы каждый раз при их чтении проверяются на внесение в них клиентом изменений и если изменения были внесены - сгенерируется ошибка.