В Rails с хранилищем сеансов на основе cookie, сеанс и cookie - это одно и то же - PullRequest
2 голосов
/ 22 ноября 2008

Я всегда использовал хранилище сеансов на основе файлов cookie и даже никогда не знал о файлах cookie до сих пор. Так есть ли какая-нибудь ситуация, когда мне понадобится хеш с печеньем?

Ответы [ 4 ]

6 голосов
/ 23 ноября 2008

Хэш cookie определенно имеет значение в приложениях Rails. Вы должны использовать куки для хранения значений на стороне клиента, которые вы хотите запомнить между сеансами.

Жетон «запомни меня» - отличный пример. Если вы хотите, чтобы пользователь автоматически входил в систему при посещении вашего сайта, просто сохраните постоянный файл cookie с некоторым значением, защищающим пользователя от несанкционированного доступа (например, уникальный хеш или guid (хорошо), который отображается в строку этого пользователя в вашей базе данных, но не может быть взломан, как просто использование простого старого целочисленного идентификатора пользователя (плохо)). Затем, когда пользователь заходит на ваш сайт, вы можете проверить хеш cookie на наличие токена запомнить меня и, если он найден, выполнить поиск в вашей базе данных и войти в систему, если совпадение найдено. Это очень распространенная практика.

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

1 голос
/ 31 мая 2009

любая ситуация, которая может использовать cookie, одинаково хорошо обслуживается хранилищем сеансов cookie. хранилище сеансов cookie rails надежно в том смысле, что конечный пользователь может читать данные сеанса, но не может их изменять.

0 голосов
/ 26 ноября 2008

Да, я действительно запутался в связи сессий с файлами cookie, думая, как это реализовать, запомни меня для входа в OpenID ... что на самом деле не отличается от того, как это делается для входа в систему на основе пароля. Но это был не мой код, он был взят из плагина для спокойной аутентификации, и нет ничего лучше, чем самостоятельно продумать весь процесс.

0 голосов
/ 22 ноября 2008

Вы не должны хранить в cookie что-либо, что пользователь не хочет видеть или изменять. Если вы сохраните идентификатор участника, то пользователь может легко изменить значение и притвориться кем-то другим. Файлы cookie также отправляются с каждым запросом на ваш веб-сервер, включая запросы изображений, JS и CSS. Если вы храните много информации в файлах cookie, это может повлиять на скорость.

Сеансы на основе файлов cookie (в общем контексте, я не могу сказать, что знаю, что делает Rails) означает, что переменные вашего сеанса связаны с идентификатором сеанса, который генерируется случайным образом. Этот идентификатор и только идентификатор возвращаются пользователю в виде файла cookie. Это позволяет связать запрос пользователя (поскольку у вас есть файлы cookie идентификатора сеанса) с сеансами пользователя. Это безопаснее, потому что кому-то будет очень трудно угадать идентификатор сеанса другого пользователя.

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