Разница между cookie и сессиями
Не так давно я писал статью о том, как сделать регистрацию и авторизацию пользователей на сайте. И там я написал, что при авторизации надо записать информацию об этом (логин и шифрованный пароль) в cookie, либо в сессию. Однако, возникает вопрос: "Что же выбрать: cookie или сессии?". В этой статье я собираюсь разобрать разницу между сессиями и cookie, чтобы Вы окончательно определились с выбором.
Принципиальная разница между cookie и сессиями состоит в том, что cookie полностью хранятся в браузере пользователя (то есть на компьютере клиента), а при сессиях в cookie хранится только идентификатор сессии, а вся информация лежит на сервере в специальном уникальном файле. Именно из этого базового различия вытекают все остальные.
Если Вы решили хранить логин и пароль в cookie, то должны понимать, что cookie можно украсть (много существует способов, но не буду сейчас на них останавливаться), а, следовательно, получить логин и, в лучшем случае, шифрованный пароль (а если не шифруете, то и сам пароль). И если он зашифрован обычной md5(), то его можно расшифровать с помощью специальных баз, которые можно поискать в Интернете. Если пароль достаточно популярный, то его легко расшифруют. То есть минус cookie - низкая безопасность.
Второй минус cookie - это то, что они живут ровно столько, сколько хранит их браузер. Чем это может обернуться? Простой пример.
У Вас серьёзный сайт, на котором у людей лежат крупные суммы денег (например, как WebMoney). Ваш посетитель пришёл в какое-нибудь Интернет-кафе, авторизовался, но выйти забыл (уверен, что с каждым из Вас это происходит регулярно). Дальше приходит злоумышленник заходит на его аккаунт и забирает cookie. Дальше процесс очевиден. А если бы использовались сессии, то по умолчанию через 15 минут бездействия пользователя происходил бы автоматический выход (файл с данными сессиями бы стирался). И ничего такого бы не произошло. Более того, ввиду того, что каждая сессия имеет уникальный идентификатор, то смысл воровства идентификатора сессии (а больше ничего взять не получится) уже отсутствует. Когда злоумшыленник придёт домой, этот идентификатор ему уже не поможет.
Но именно по причине временного хранения сессии, появляется большой минус сессий - неудобно. Допустим, человек авторизовался, чтобы следить за какими-нибудь данными (например, за входящей почтой), но делает это он примерно раз в полчаса. И каждый раз он вынужден авторизовываться, что, разумеется, неудобно.
Именно по этой причине cookie так популярны при работе с механизмом авторизации.
Вывод: если у Вас очень серьёзный сайт, где воровство аккаунта может привести к большим проблемам (любой сайт, где у людей хранятся деньги, либо какая-нибудь очень ценная личная информация), то надо использовать сессии. Если же у Вас сугубо информационный сайт, где материальная и личная ценность аккаунта стремятся к нулю - используйте cookie, и пользователи Вам скажут спасибо.
-
- Михаил Русаков
Комментарии (3):
А можно ли как-нибудь сохранить в куки объект созданного мною класса?
Ответить
Можно преобразовать его в строку и сохранить.
Ответить
Но когда пользователь нажимает сохранить пароль в браузере а так делают многие то данные по любому в cooci браузера сохраняются.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.