Вопрос про время сессий

Dark Wizard

Гуру форума
Регистрация
23 Сен 2007
Сообщения
194
Реакции
80
Пришло время доработать скрипт авторизации, появилась необходимость сделать выбор времени сессий, и возникли следующие вопросы.

session.1488238558.jpg


Сейчас у меня реализация простым session_start(); и $_SESSION['login'] , $_SESSION['password'].

Насколько я понимаю, их время ограничено настройками в php.ini, либо заданным параметром в .htaccess И нельзя настроить разное время для разных пользователей.

Вопрос 1 - если мне нужно, чтобы при авторизации пользователь также выбирал время (час-день-неделя-навсегда) сессии, мне по-любому нужно использовать куки? Сделать хранение сессии навсегда для отдельного пользователя только через сессии никак не получится?

Вопрос 2 - если делать через куки, правильно ли я понимаю, что лучше совместить куки и сессии, а авторизацию сделать по алгоритму с Для просмотра ссылки Войди или Зарегистрируйся - проверям логин-пароль, если верно, то в зависимости от ip генерируем уникальный хэш и записываем его в куки и в ячейку таблицы этого пользователя. В дальнейшем сверяем, и если не сходятся - то чистим куки (это если надо чтобы сессия хранилась бесконечно).

Можно также дать ссылку, где есть развёрнутый ответ. Спасибо!
 
Есть, конечно, параметры session.gc_maxlifetime и session.cookie_lifetime...

Но глобально сессия живёт ровно до закрытия окна браузера. Браузер закрыт - сессия закрылась. В этом и есть её смысл. Хочешь после закрытия - это куки. Всё просто.

P.s. и не надо бояться куков... Это практически тоже самое, что сессия. Разница только в том, что сессия храниться на стороне клиента и удаляется после разрыва соединения, а куки хранятся в барузере столько, сколько указано при их создании. Хотя и тут вечную куку не сделать... Обычно куку выставляют на 1 неделю с продлением при каждом просмотре страниц.
 
или как вариант в базе данных (mysql) авторизационные сессии с временем жизни и проверять истекло ли время или нет
 
efir, толку от хранения сессии в базе? Что ты этим получишь?
Тебе нужно привязать пользователя к ней - а это куки... Нет, можно более извращённые варианты - типа flash, кэша браузера, локального хранилища... Но зачем? Есть куки и их надо использовать.

В базе сессии хранятся в 2 случаях:
1) В куке храним ключ авторизации, а в базе уже набор всех параметров чтобы проверять на перехват куков, к примеру
2) Стоит кластер из 2 APP-серверов и им надо обмениваться сессиями...
 
Для просмотра ссылки Войди или Зарегистрируйся, сами же на свой вопрос и ответили:
1) В куке храним ключ авторизации, а в базе уже набор всех параметров чтобы проверять на перехват куков, к примеру
а так же, к примеру, для решения описанной ТС задачи.
 
Обычно куку выставляют на 1 неделю с продлением при каждом просмотре страниц.
А я при выставления чекбокса «Запомнить» выставляю куку на 5 лет. Что со мной не так?
или как вариант в базе данных (mysql) авторизационные сессии с временем жизни и проверять истекло ли время или нет
efir, толку от хранения сессии в базе? Что ты этим получишь?
Это просто вариант «запоминания», может работать без авторизации на сайте и даже вовсе без куки и даже без сессии. Просто как вариант, его тоже стоит упомянуть.
Пример генератора сессии на основе «ip+браузер+пользователь+язык» — запоминаем в БД для показа заказа в магазине, в том числе не авторизованным пользователям.
PHP:
function shop_generate_session() {
   global $system;
   $ip=$_SERVER['REMOTE_ADDR'];
   $ua=$_SERVER['HTTP_USER_AGENT'];
   $login=$system->user['username'];
   $lang=!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])?$_SERVER['HTTP_ACCEPT_LANGUAGE']:'en';
   $unique_key=$ip.$ua.$login.$lang;
   $unique_key=strtoupper(md5($unique_key));
   return($unique_key);
}
Работает, пока пользователь на перезагрузит роутер или не обновит браузер, т.е. для размещения заказа в магазине обычно хватает и про регистрацию можно не спрашивать. Минус — БД нужно чистить. Плюс — в БД можно искать, а вот по кукам не поищешь.
 
Последнее редактирование:
А я при выставления чекбокса «Запомнить» выставляю куку на 5 лет. Что со мной не так?
Шанс, что пользователь вспомнит про эту галочку через неделю - уже мал. А кука, скорее всего, из-за смены IP и т.д. устареет гораздо раньше. Так что особого смысла нет. 1-2 недели, максимум месяц.
ip+браузер+пользователь+язык
Вооооооооот... А потом мы удивляемся почему так много взломов...
IPv4 не резиновая и как бы лопнула уже давно. Под одним IP сидят районами... Для ряда пользователей достаточно будет иметь тот же браузер и того же провайдера чтобы стать кул-хацкером...
Только авторизация и только по паролю...
Сейчас даже за псевдопроизвольные ключи сессий бьют по рукам - шанс дубля есть... Только енкрипт от неких данных по закрытому ключу...
 
Шанс, что пользователь вспомнит про эту галочку через неделю - уже мал. А кука, скорее всего, из-за смены IP и т.д. устареет гораздо раньше. Так что особого смысла нет. 1-2 недели, максимум месяц.
IP к кукам никакого отношения не имеет. Авторизация у меня работает по полгода и более. Чего-то Вы плаваете в этом вопросе.
По моему мнению, не надо заставлять пользователя, да ещё на коммерческом сайте, проявлять паранойю. Если он хочет двухфактурную авторизацию — мы ему предоставим, хочет пароль из 2 символов — пожалуйста. ССЗБ. Когда тупят — надо подсказывать, это да. Кстати, реализовал модную нынче авторизацию через соц. сети. Мне понравилось — входит за 1 клик. Если первый раз — сеть спросит разрешение для твоего проекта для предоставления данных. Второй и последующие разы — кликнул и вошёл.
Проекты разными бывают. Маленький — можно лояльно к пользователю, большой — серьёзные проверки. Разнообразие должно быть, нельзя всех под одну гребёнку.

Вооооооооот... А потом мы удивляемся почему так много взломов...
Какие взломы, я Вас умоляю. Такая связка используется в некритичном месте — максимум узнать кто это и чтоб без авторизации в корзину накидал. Это ж менеджеры всё требуют — «надо чтобы без авторизации корзину заполнил, потом зарегистрироваться проще будет». Целые книги об этом написаны.
Кстати, Алиэкпресс что-то похожее использует. Иногда заходишь с работы (статичный IP) — а мне «Привет, Анжела».
Я даже знаю теперь, кто недавно на Али сидел:lol: Так там хуже всё — у меня и Анжелы браузеры разные.
Но как только в кабинет — требует авторизацию.
Проще говоря, это что-то вроде «раннего узнавания», никаких действий совершить в аккаунте нельзя, но «Привет, Вася, типа мы тебя узнали». Юзерфрендли интерфейс.
 
Последнее редактирование:
IP к кукам никакого отношения не имеет.
Т.е. защита от кражи куков тебя не интересует?
Нет, друг мой... Времена хотелок пользователя прошли... Сейчас с безопасностью в сети всё настолько стало плохо, что надо делать и принудительную двухфакторку, и принудительное шифрование и т.д.
А тем более на коммерческом сайте... Ладно кто-то упрёт аккаунт с форума о котятах (хотя и там ценной инфы будет дофига), а с интернет магазина... Последние покупки, их частота, суммы... Вуаля и мы знаем на какую сумму можно разводить спокойно...

Времена, когда можно было вот так халатно относиться к безопасности прошли...
Чего-то Вы плаваете в этом вопросе.
Нет, друг мой... Я прекрасно понимаю, что кука - это всего лишь файлик txt в папочке браузера. Его можно как перекачать на другую машину, так и сгенерировать самому. И именно поэтому нужная дополнительная защита хотябы в виде привязки к IP

P.s. и давай на этом закончим... ТС уже проклял, что с нами тут связался...
 
Т.е. защита от кражи куков тебя не интересует?
Интересует. Но она не должна быть публичной.
Если ты о XSS, то я 3 года назад сделал защиту и проверил, работает. Но будешь говорить как — кому надо встроят обход.
Нет, друг мой... Времена хотелок пользователя прошли...
По твоей логике, пользователя к стенке надо поставить и обшманать, чтобы допуск получил — тебе деньги заплатить.
Сейчас с безопасностью в сети всё настолько стало плохо, что надо делать и принудительную двухфакторку, и принудительное шифрование и т.д.
А тем более на коммерческом сайте... Ладно кто-то упрёт аккаунт с форума о котятах (хотя и там ценной инфы будет дофига), а с интернет магазина... Последние покупки, их частота, суммы... Вуаля и мы знаем на какую сумму можно разводить спокойно...
Времена, когда можно было вот так халатно относиться к безопасности прошли...
Проснитесь, вся ваша безопасность под колпаком у корпораций. Ваша почта где — в Гугле, Майлру? И они её не читают? Really?
Причем если gmail и может обладать какой-то конфиденциальностью, то пользователи mail.ru меня удивляют, с его-то репутацией.

Я прекрасно понимаю, что кука - это всего лишь файлик txt в папочке браузера. Его можно как перекачать на другую машину, так и сгенерировать самому. И именно поэтому нужная дополнительная защита хотябы в виде привязки к IP
Кука ещё — файлик в папочке сервера. Совпадение этих файликов (браузера и сервера) есть упрощённое понятие авторизации.
Привязка к IP будет нивелировать все удобства.
Должно быть понимание — где и что. В критичных случаях можно переспросить пароль, логин, вывести капчу. То есть идентифицировать пользователя более надёжно, чем IP — сейчас и под прокси сидят, и динамический IP имеют. А проект Тор, где прокси из цепочек может меняться каждый запрос? Потому IP годится лишь на сессию, для «неважных» запоминаний — типа «раннее узнавание» или «статистика посещений».
P.s. и давай на этом закончим... ТС уже проклял, что с нами тут связался...
Ну не хочешь — не пиши. В любом случае мнение было интересно, спасибо за общение.
 
Последнее редактирование:
Назад
Сверху