Перейти к контенту
  • 0

СЕССИЯ: Удаление сессии после (X) неактивности...


never-never

Вопрос

Работая с 2.0.4, заметил один нюанс касательно обработки сессии... а именно - после определенной неактивности на форуме - после этого времени, заходя вновь на форум - сессия пользователя удаляется и срабатывает функция create_guest_session() для повторной авторизации... Но в версии 1.3.1 сессия хранится и не удаляется до тех пор, пока хрянятся cookies, независимо от неактивности на форуме... прежняя сесся не удаляется а лишь обновляется...

 

Как более корректно подправить в 1.3.1 чтобы сессия удалялась после (X) неактивности на форуме... как это делается в 2.x.x

 

Заметил такой нюанс, что параметр $ibforums->vars['session_expiration'] вообще не задействован в 2.x.x....

 

Функция create_guest_session()

  $ibforums->vars['session_expiration'] = $ibforums->vars['session_expiration'] ? (time() - $ibforums->vars['session_expiration']) : (time() - 3600);
 
 $DB->simple_construct( array( 'delete' => 'sessions', 'where'  => "ip_address='".$this->ip_address."'".$extra ) );

 

 

Функция create_member_session()

$ibforums->vars['session_expiration'] = $ibforums->vars['session_expiration'] ? (time() - $ibforums->vars['session_expiration']) : (time() - 3600);
	 
	 $DB->simple_construct( array( 'delete' => 'sessions', 'where' => "member_id=".$this->member['id'] ) );

 

В версии 1.3.1

 

Функция create_member_session()

 	 $ibforums->vars['session_expiration'] = $ibforums->vars['session_expiration'] ? (time() - $ibforums->vars['session_expiration']) : (time() - 3600);
	 
	 $DB->query("DELETE FROM ibf_sessions WHERE running_time < ".$ibforums->vars['session_expiration']." or member_id='".$this->member['id']."'");

 

Функция create_guest_session()

  $ibforums->vars['session_expiration'] = $ibforums->vars['session_expiration'] ? (time() - $ibforums->vars['session_expiration']) : (time() - 3600);
 
 $DB->query( "DELETE FROM ibf_sessions WHERE running_time < ".$ibforums->vars['session_expiration']." or ip_address='".$this->ip_address."'".$extra);

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0
Но в версии 1.3.1 сессия хранится и не удаляется до тех пор, пока хрянятся cookies, независимо от неактивности на форуме... прежняя сесся не удаляется а лишь обновляется...

Неправда ваша.

Смотрите. Форум 1.х, functions.php:

 

       	 //---------------------------------
      	 // Remove the defunct sessions
      	 //---------------------------------
      	 
 $INFO['session_expiration'] = $INFO['session_expiration'] ? (time() - $INFO['session_expiration']) : (time() - 3600);
 
 $DB->query("DELETE FROM ibf_sessions WHERE running_time < {$INFO['session_expiration']}");

               $DB->query("DELETE FROM ibf_sessions WHERE member_id='".$this->member['id']."'");
....

 

Долго хранить сессии не совсем безопасно и умно.[1129465308:1129465401]Мы кстати одинаковые с вами запросы привели.

Сессии удаляются в любом случае. Правда, если кто-то есть на форуме. Но это не совсем важно в данном случае.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Долго хранить сессии не совсем безопасно и умно.

Мы кстати одинаковые с вами запросы привели.

 

Да, все верно... я не верно обозначил трактовку вопроса... сама суть в ином...

 

Изучал я логику процесса авторизации в класссе class session... и мне не совсем ясен НЮАНС с cookies... а именно - да, действительно сессия, где running_time < {$INFO['session_expiration']} - удаляется... но не в этом дело...

Дело в том, что независмо от того - есть ли сессия в базе данных таблицы sessions или нет ее, даже если таблица sessions абсолютно пуста... НО, если в браузере есть сохраненные cookies ("member_id" + "pass_hash") - пользователь автоматически авторизируется на форуме!!! без залогирования!!! и в базе создается сессия для него... Вот сей нюанс меня немного настораживает...

 

Все дело в том, что я както залез в свой ноутбук, и обнаружил там прежне давным давно проинсталенный локально форум 1.3... открыл его и т.к. cookies сохранились в браузере - произошла автоматическая авотризация... хотя прошло месяца 3 наверно... а cookies в функции function my_setcookie() сохраняются на год!

$expires = time() + 60*60*24*365;

 

Вот данный факт в 1,3 меня не очень радует... хотя в версии 2,0 после определенной неактивности на форуме - автоматическая авторизация через cookies - не срабатывает... сравнивал клсасс class session 1,3 и 2,x -- координальных отличий нет... но в 2,0 фишка с cookies после длительной неактивности - не срабатывает...

 

А нужно мне следующее... лаконичная хронолгия...

- Пользоваетль прошел регистрацию... создал аккаунт...

- Залогинился на форуме...

Далее мне нужно что-бы после определенно-заданного периода неактивности - пользователь, вернувшись на форум - не смог автоматически авторизироваться на форуме через cookies!

30 минут к примеру прошло... пользователь был не активен... при возврате к работе с форумом - пользователь уже автоматом отправлялся в раздел act=Login

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Все дело в том, что я както залез в свой ноутбук, и обнаружил там прежне давным давно проинсталенный локально форум 1.3... открыл его и т.к. cookies сохранились в браузере - произошла автоматическая авотризация... хотя прошло месяца 3 наверно... а cookies в функции function my_setcookie() сохраняются на год!

ну логично! что ж мне каждый раз при редиректе вводить пароль???

 

сохраняются на год!

ну если изменить цифирь, то всё будет для вас в норме ?[1129490354:1129490478]

и обнаружил там прежне давным давно проинсталенный локально форум 1.3... открыл его и т.к. cookies сохранились в браузере - произошла автоматическая авотризация.

только если ваш новый пароль совпадает с прощлым, потому как ид той сессии уже давно не дествует.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Но почему тогда в версии 2,x при непродолжительной неактивности на форуме - нужно воновь авторизироваться?

 

Там такие же настройки для cookies $expires = time() + 60*60*24*365;

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Но почему тогда в версии 2,x при непродолжительной неактивности на форуме - нужно воновь авторизироваться?

я может не въезжаю, но я не помню, когда я последний раз авторизовался например здесь, хотя окно частенько сутками висит открытым?

если вы про сессию - то да, она по идее автоматом генерится новая... юзер этого и не замечает :D

раз пошла такая пьянка - почему бы вообще не ставить кук expires? тогда при выходе с сайта он будет убиваться да и всё...

Ссылка на комментарий
Поделиться на других сайтах

  • 0
раз пошла такая пьянка - почему бы вообще не ставить кук expires? тогда при выходе с сайта он будет убиваться да и всё...

 

Хорошая идея!

Сделать некю корректировку с добавлением дополнительно $cookie['expires']

 

Просто раз осуществляется автоматическое залогирование и создание сессии на форуме через сохраненные cookies... то если к примеру некто ЗЛОЙ будет иметь ХЕШ юзера (не нужно углубляться в вопрос каким образом)... то ему ничего не стоит зайти на форум подправив cookies...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

never-never, всё так, но не кажется ли вам, что применительно к форуму (читай - открытой, всеобщей, площадке общения) вопросы удобства (слово "юзабилити" в исконном смысле тут даже лучше подходит) все же важнее, чем столь экстремальные методы защиты этих самых пользователей?

ведь в конце концов кто мешает "не углубляясь в подробности каким образом" просто обманом узнать пароли самого пользователя, и тут уже никакие сессии не помогут...

---

в порядке оффтопа: предлагаю подумать о написании скрипта автоматической смены паролей у всех юзеров через случайный промежуток времени с оповещением по секретным каналам и только по предъявлению паспорта :D

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.