Зачем делают срок жизни сессий только до закрытия браузера если, увеличив их до большого времени, мы получаем тоже самое, только при этом избавляемся от КУЧИ мусора на сервере? Это типа ещё один метод защиты от кражи ID сессий? Но если защита ID сессий гарантируется, тогда классическая схема (срок жизни сессии - время работы браузера) теряет всякий смысл? Прошу высказать свои мнения на этот счёт.
1. Смею предположить, что в том числе и для избежания "кучи мусора" сессии и валидны только до закрытия браузера. Потом файлы с сервера чистит сборщик мусора. А так, зашло за день 500 посетителей, которые 5 секунд поглядели на страничку и забыли про её существование. А файлы сессии хранятся день... месяц... 2. Для долгосрочного хранения были придуманы куки.
начать надо с того, чтобы понимать суть сессии. сессия - это сеанс и когда ты закрывашь броузер сеанс заканчивается поэтому сеансовые сессии самые правильные. продолжить можно с того, что есть несколько механихмов сохранения сессии (сеанса) - это куки и передача серез параметры (SID=123). понимая это отпадают всякие вопросы о том сколько чего хранить и т.д. есть ситуация когда надо запомнить ползователя (не сессию) на более долгия срок чем сеанс (сессия). тут куки и UID (User Identification) самое то. думать о том сколько сессий зранится в файлах или в базе и что и как удаляется - забивать себе голову мусором, т.к. у меня например есть ресурс с почещением 100000 хостов в день и я вообще не думаю о том, где и сколько сессий у меня хранится.
Тем не менее это никому не мешает использовать их для авторизации и восстановления "логической" сессии, например, пользования почтовым аккаунтом.
400Hz, тогда получается так: 1. Сессии жизнь которых кончается с закрытием браузера - самые "правильные". 2. Забивать голову на счет очистки мусора не надо - и так всё нормально. Тогда у меня ещё 1 вопрос: когда пользователь во время входа ставит галочку на "Запомнить меня", я делаю так: 1. Устанавливаю куку с md5("логин:хеш пароля"). 2. А потом если пользователь с такой кукой приходит, то я выполняю автовход. Насколько это правильный подход (в смысле на счёт безопасности и т.д.)?
Vitas Да, все верно. Только я бы еще советовал добавить в хешируемое выражение User-Agent, а также IP либо часть IP, чтобы украденную куку нельзя было использовать на другом компьютере/браузере. В идеале - IP целиком, но тогда автовход не будет работать для посетителей с динамическим IP.
что-то мне не нравится схема сессии+кукиз, ведь у массы пользователей кукиз отключены. выскажитесь пожалуйста или дайте ссылку на вдумчивую статью.
если они отключены и PHP сконфигурирован соответствующим образом, то ID сессии будет передаваться как GET параметр.... http://example.com/?SID=j6oAOxCWZh/CD723LGeXlf
да я вообще ацкий сотона. спасибо, ясно, без зашифрованного пароля в кукиз не обойтись. у меня паранойа.
тогда механизм аутентификации через сессии и кукиз мне вообще не ясен. допустим, прользователь авторизуется логин/пароль, на него заводится сессия до конца сеанса | на t времени. где как не в кукиз хранить данные аутентификации? я так понял, что в php-сообществе бытует мнение, что номер сессии подобрать нельзя, а если и можно, то записанные в сессию куски ip и модель браузера решают все проблемы. а как быть с локальными сетями провайдеров, где пользователи работают через прокси? к тому же, в некоторых конторах на всех компах стоит один и тот же браузер. тугому клерку переслать сотруднику ссылку с номером сессии -- раз плюнуть. в итоге мы имеем бытовое хакерство. вы хотите сказать, что нет смысла думать об этом вообще? поясните пожалуйста.