Доброго времени суток. Вопрос заключается в том, что стоит ли как-то извращаться и дополнительно защищать сессию? Например, у меня пароли пользователей лежат в БД в хэшированом виде, а когда пользователь авторизовывается, то под него заводится сессия. Так вот на сервере в temp`e создается файл сессии, в который я кладу значения логина и пароля в чистом виде. Их же вроде оттуда вообще невозможно достать? Мне кажется, что максимум, что может сделать плохой человек, то это украсть куку сессии пользователя и присвоить себе, и ходить по сайту уже под логином этого пользователя, но это и то при условии, что если злоумышленник успеет украсть сессию, пока она не закроется из-за бездействия 1440 сек. Надеюсь, понятно изложил суть вопроса
Вопрос номер раз: а для чего тебе пароль в чистом виде? Для каких таких целей странных? А может у меня пароль это пробел?
На шаред-хостингах сессии могут храниться в /tmp и соответственно другие пользователи хостинга смогут вытащить твои пароли при такой конфигурации.
Ke1eth, ты меня похоже не понял и задал вообще бессмысленные вопросы. Не знаю зачем, но я на них отвечу, хоть они и не имеют отношения к данному вопросу. Пароль в чистом виде лежит только во временном файле сессии на сервере, а лежит он там в чистом виде, потому что мне лень было проводить лишние манипуляции и поэтому созрел вопрос этой темы: стоит ли вообще напрягаться по этому поводу. И пароль у меня пробелом быть не может, ибо я это проверяю. [vs], а вот тебе спасибо, дельный ответ. Буду иметь виду, если буду размещаться на шаред хостинге.
MiksIr, тоже спасибо. Как - то запарился, просто сначала думал извращаться и зачем - то сохранял пароль в сессии, чтобы как - то потом с ним работать, а теперь понял, что вообще не надо.
При авторизации: Код (Text): $_SESSION["user_id"] = $user_id; $_SESSION["user_ip"] = $_SERVER["REMOTE_ADDR"]; Потом, когда проверяете, залогинен ли юзер: Код (Text): $is_logged = isset($_SESSION["user_id"]) && $_SESSION["user_ip"] == $_SERVER["REMOTE_ADDR"]; Если нужно проверять подсети, то чуть сложнее, но идея та же
Код (Text): [/b], если мой вопрос показался бессмыссленным, то тут стоит задуматься, а зачем я задал? 1) НИКОГДА и НИГДЕ не храни пароли открытыми 2) НИКОГДА не делай ограничений для пользователя, если он хочет пробел, пусть будет пробел - это твоя головная боль, а не пользователя. 3) см. п.1
Тебя не о том спросили. Не почему он открытый, а зачем ты вообще хранишь пароль? Ты на каждый чих заново авторизацию проводишь? Не проще ли в сессии поставить флажок? Типа $_SESSION['logged_in'] = true?
из реальной жизни: - для идентификации нам необходим и достаточен user_id. пусть анонимусу соответствует специальный случай, например user_id=0. тогда проверка на залогированность: if ($user_id)… - строго говоря перенос своих файлов сессии в другой каталог еще не обязательно защищает их от чтения другими пользователями. надо явно позаботиться об атрибутах доступа! Добавлено спустя 9 минут 45 секунд: - во избежание атаки session fixation надо генерировать новый session_id после успешного логина. - 9000 раз подумай прежде чем создавать долгоживущие сессии. это напряжно как по ресурсам, там и по секурности. - параметры secure и httponly по возможности ставь в true
p.s. это уже не прямо про безопасность, но имеет значение: файл сессии блокируется на время выполнения скрипта. при некоторых раскладах с "асинхронными" запросами ajax это может привести к заметной задержке отрисовки страницы.