Зачем хранить сессии на сервере, а не внутри куки? - PullRequest
10 голосов
/ 16 октября 2010

Я уже некоторое время пользуюсь Flask, и мне очень нравится этот фреймворк. Одна вещь, которую я не понимаю, заключается в том, что почти во всех других местах они говорят о хранении сеанса на сервере и идентификаторе сеанса на клиенте, который затем идентифицирует сеанс. Однако после использования колбы я не чувствую необходимости делать это. Сохранение сеанса в виде cookie-файла на клиенте криптографически служит моей цели и выглядит вполне безопасным. Единственное, что я не могу зашифровать сеансовые ключи, например:

session['life'] = 'the great one'

будет выглядеть как

life='gfhjfkjdfa some encryption kj'

в файле cookie, сохраненном на клиенте. Но как бы это ни значило, поскольку оно все еще зашифровано. Я уверен, что люди здесь знают вещи намного лучше, чем я, поэтому попросите кого-нибудь, пожалуйста, уточнить :-)

Ответы [ 4 ]

15 голосов
/ 16 октября 2010

Даже если ваши данные зашифрованы, пользователь все равно может откатить свои куки-файлы до предыдущего состояния (если вы не начнете кодировать одноразовые идентификаторы и т. Д.)

например. cookie говорит, что у пользователя есть 100 кредитов, пользователь тратит 100 кредитов, он получает новый файл cookie, говоря, что у него 0 кредитов. Затем они могут восстановить свой предыдущий файл cookie (со 100 кредитами).

В зависимости от того, как вы зашифровываете cookie, пользователь также может удалять ключи, вставлять фиктивные данные и т. Д.

7 голосов
/ 16 октября 2010

Если данные сеанса необходимы на сервере, имеет смысл сохранить их на сервере. Он уменьшает объем данных, отправляемых клиентом назад и вперед. Кроме того, файлы cookie имеют ограничение на количество данных, которые они могут хранить.

6 голосов
/ 16 октября 2010

В дополнение к уже упомянутым пунктам

  1. Пользователи могут отключить файлы cookie, используя настройки своего браузера.Многие антивирусные сканеры также сканируют и отмечают файлы cookie как риск, из-за которого также может быть запрещено использование файлов cookie на компьютере пользователя.

  2. Файлы cookie могут быть удалены пользователем дажев середине его сессии.(Фактически, я случайно сделал это на днях, когда один мой компьютер сканировал список файлов cookie для отслеживания ... и я просто нажал «Очистить», и все они исчезли).В случае, если пользователь удаляет куки, состояние пользователя будет потеряно.

Если вы используете файлы cookie для управления всем состоянием, вы всегда зависите от клиентской среды и ее настроек.В таком случае вам, вероятно, потребуется по крайней мере резервный механизм на случай, если куки будут удалены / отключены и т. Д., Чтобы ваше приложение работало правильно.

1 голос
/ 30 октября 2010

Реализация SecureCookie, которую использует Flask , не шифрует значения . Единственное, что гарантируется, это то, что пользователь не может изменить cookie, не зная секрета, используемого приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...