Различия между куки и сессиями?

Для поиска переменной и ее экранирования:

const escapeStringRegexp = require('escape-string-regexp')
const name = 'foo'
db.stuff.find({name: new RegExp('^' + escapeStringRegexp(name) + '$', 'i')})   

Экранирование переменной защищает запрос от атак с помощью.. * или другого регулярного выражения.

escape-string-regexp

148
задан Rob Hruska 7 May 2012 в 18:06
поделиться

3 ответа

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

Самые современные сайты используют второй подход, сохраняя идентификатор в Cookie вместо того, чтобы передать его в URL (который излагает угрозу безопасности). Вы, вероятно, используете этот подход, не зная это, и путем удаления cookie, Вы эффективно стираете их соответствие сессиям, поскольку Вы удаляете уникальный идентификатор сессии, содержавшийся в cookie.

178
ответ дан 23 November 2019 в 22:12
поделиться

Cookie является просто строкой краткого текста, которая отправляется назад и вперед между клиентом и сервером. Вы могли сохранить name=bob; password=asdfas в cookie и отправляют это назад и вперед для идентификации клиента на стороне сервера. Вы могли думать об этом как о продолжении обмена с кассиром банка, который не имеет никакой кратковременной памяти и нуждается в Вас для идентификации для каждой транзакции. Конечно, использование cookie, чтобы хранить эту добрую информацию ужасно небезопасный. Cookie также ограничены в размере.

Теперь, когда кассир банка знает о его проблеме памяти, Он может записать Вашу информацию о листке бумаги и присвоить Вам короткий идентификационный номер. Затем вместо того, чтобы дать Ваш номер аккаунта и водительские права для каждой транзакции, можно просто сказать, что "я - клиент 12"

Перевод этого к веб-серверам: сервер будет хранить уместную информацию в объекте сессии и создавать идентификатор сессии, который это передаст обратно клиенту в cookie. Когда клиент передает cookie обратно, сервер может просто искать объект сессии использование идентификатора. Так, при удалении cookie сессия будет проиграна.

Еще одна альтернатива - чтобы сервер использовал перезапись URL для обмена идентификатором сессии.

Предположим, что у Вас была ссылка - www.myserver.com/myApp.jsp Вы могли пройти страницу и переписать каждый URL как www.myserver.com/myApp.jsp?sessionID=asdf или даже www.myserver.com/asdf/myApp.jsp и обменивайтесь идентификатором тот путь. Эта техника обрабатывается контейнером веб-приложения и обычно включается путем установки конфигурации для использования сессий без cookie.

301
ответ дан 23 November 2019 в 22:12
поделиться

Google JSESSIONID. Это объяснит, как Сервлет, API первоначально использует перезапись URL и затем, если куки включены, cookie для управления сессиями.

HTTP является не сохраняющим состояние, таким образом, клиентский браузер должен отправить идентификатор своей сессии к серверу с каждым запросом. Сервер, через любые средства, использует этот идентификатор для получения любых данных для той сессии, делающей это доступный в течение времени жизни запроса.

0
ответ дан 23 November 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: