Когда я использую Express cookie-session, достаточно ли удалить cookie на стороне клиента, чтобы выйти из системы?

Я использую Экспресс-сессия cookie для аутентификации, которая, если я правильно понимаю, работает путем сохранения файла cookie локально в браузере пользователя и данных сеанса нет на стороне клиента.

В документации сказано, что для выхода из системы мы должны установить req.session = null на сервере. Итак, прямо сейчас мой клиент выполняет HTTP-запрос к этой конечной точке.

Клиент:

async function logout() {
    await fetch(
        process.env.REACT_APP_SERVER_URL + "/logout",
        {
            method: "POST",
        }
    )
}

Сервер:

exports.logout = (req, res, next) => {
    req.session = null
    res.sendStatus(200)
}

Но это, очевидно, может потерпеть неудачу, если сервер не работает. Так что теперь мне интересно, хватит ли просто удалите файл cookie сеанса на стороне клиента и даже полностью удалите конечную точку выхода. Если на сервере не хранятся данные сеанса, это должно работать так же хорошо и не оставлять следов, верно?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, это правильно, вы можете просто удалить файл cookie, и в следующий раз, когда клиент попадет на сервер, не будет сеанса для идентификации пользователя, поэтому пользователь выйдет из системы.

Однако, как правило, клиентская сторона не должна иметь возможности работать с файлом cookie сеанса из соображений безопасности, и почти всегда файл cookie сеанса помечен как httpOnly, что означает, что им нельзя манипулировать с помощью javascript на стороне клиента.

Одна дополнительная мера предосторожности, которую вы можете принять (если вы решите позволить клиенту работать с файлом cookie сеанса), — это sign файл cookie, поэтому, даже если клиент изменит содержимое файла cookie, подпись файла cookie не будет действительной и будет отклонена сервер.

Спасибо за ваш ответ. Мой файл cookie сеанса помечен httpOnly, и кажется, что клиент не может получить к нему доступ (и, следовательно, не может удалить его локально). Это правильно? Кроме того, экспресс-сессия cookie использует «секрет». Это та самая подпись, о которой вы говорите?

Florian Walther 21.03.2022 11:49

Интересно, что расширения Chrome могут получать доступ к httpOnly файлам cookie через Chrome Cookie API. Однако мое приложение React не может.

Florian Walther 21.03.2022 11:50

Да, «секрет» — это ключ, который используется для подписи файла cookie. Если вы хотите продолжить свой первоначальный план, то sign куки и не отмечайте их httpOnly

Ivan V. 21.03.2022 12:47

Вы знаете, почему расширениям Chrome разрешен доступ к httpOnly файлам cookie через Cookie API? Я использую эту функцию в своем расширении, и там я могу удаляю (и запрашиваю) файл cookie. developer.chrome.com/docs/extensions/reference/cookies

Florian Walther 22.03.2022 21:43

Расширение Chrome может получить доступ ко всем файлам cookie: developer.chrome.com/docs/extensions/reference/cookies.

Ivan V. 22.03.2022 22:09

Да, мне просто интересно, почему. Я думал, что JavaScript не может получить к ним доступ из соображений безопасности. Тогда почему расширения не имеют этого ограничения? Может быть, потому что они должны быть явно установлены.

Florian Walther 22.03.2022 22:11

Другие вопросы по теме