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

Если злоумышленник зашел в аккаунт, как сбросить его сессию? Смена пар


fagediba

Вопрос

Вот такая проблема. В админке включена опция "Сбрасывать ключ авторизации пользователей при каждом входе?" и "Проверить браузер пользователя при проверке сессии"

 

Я залогинелся в аккаунт с 2х браузеров. Допустим в первом я - хозяин акка, а во втором это злоумышленник заполучивший пароль.

 

Допустим хозяин акка заподозрил что кто-то получил его аккаунт.

 

Я меняю пароль от аккаунта в первом браузере и считаю что теперь в мой аккаунт никто не зайдет. Но со второго браузера злоумышленник все равно в акке.

 

Я заходил - выходил в свой акк в первом браузере и у меня никак не получилось сбить сессию злоумышленника.

 

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

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

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

  • 0
Просмотрел эти файлы, прочитал статью http://www.getinfo.ru/article393_1.html про сессии. Понял что я до этого совершенно не понимал что такое сессия и что такое куки. В ипб все сделано правильно. Просто нужно указывать время жизни сессии поменьше. Сейчас указал 600 секунд (было что то типа 6000000000), т.е. получается после смены пароля смена сессии произойдет через 10 минут, т.е. получается злоумышленник будет сидеть в аккаунте ровно столько, сколько живет сессия. Я так понимаю сильно малые значения ставить нельзя, наверно будет лагать?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

В общем получается так:

 

человек приходит на форум и вводит логин пароль. Получает куки session_id, member_id, pass_hash.

 

member_id - это номер аккаунта

 

pass_hash это ???

$this->ipsclass->my_setcookie( "pass_hash", $this->member['member_login_key'], ( $this->ipsclass->vars['login_key_expire'] ? 0 : 1 ), $this->ipsclass->vars['login_key_expire'] );

 

 

session_id это member_login_key

$member['member_login_key'] = $this->ipsclass->converge->generate_auto_log_in_key();

member_login_key - это и есть сессия, соответственно в моем случае живет 600 секунд.

 

 

Что такое за кука "pass_hash"

 

Что за функция и в каком файле она описана "generate_auto_log_in_key();"

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

  • 0

http://forum.sysman.ru/index.php?showtopic=23033&st=0entry198107

тоесть pass_hash на самом деле никак не должен быть связан с паролем, чтобы не украли

 

session_id это не member_login_key

 

если очень хочется безопасно - удалять при create_member_session все предыдущие сессии с этим мембером

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

  • 0
по нему мы вытаскиваем из таблицы пользователей мембер_логин_кей и сверяем его с pass_hash

если совпало - авторизация, запись в таблицу сессий новой сессии

 

Такс значит пасс_хеш сверяется с мембер_логин_кей.

 

Stronghold cookie - это я так понимаю те куки в настройках с привязкой к географии. Это у меня отключено, также как и проверка по ip. Первое я возжможно еще и включу, не разбирался с этой настройкой еще.

 

Мне нужно подумать и еще раз просмотреть всю цепочку авторизации.

 

Вообще я так понимаю мембер_логин_кей не меняется во время смены пароля? Т.е. поидее он должен меняться, тогда у злоумышленника первым слетает сессия, дальше идет проверка по куке пасс_хеш и тут тоже облом т.к. мембер_логин_кей сменен.

 

Если же при смене пароля мембер_логин_кей не меняется - то злоумышленник будет сидеть в акке до истечения срока действия мембер_логин_кея, а это 7-30 дней.

 

Также интересует что за функция и где описана

$member['member_login_key'] = $this->ipsclass->converge->generate_auto_log_in_key();

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

  • 0

class_converge.php описана

только нет,злоумышленник будет сидеть пока session_id не исчезнет, а не логин кей

предлагается чистить таблицу сессий принудительно из функции create_member_session

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

  • 0
чистить таблицу сессий принудительно из функции create_member_session

Да там и так вызов очистки есть если $this->member['id'] не пустой

$this->ipsclass->DB->do_delete( 'sessions', "member_id=".$this->member['id'] );

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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