[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос-уточнение по поводу случайного ключа,
Безухов
Я долго мучился с системой авторизации, а уже выдумав её и обнаружив некоторые нестыковки, наткнулся на топ-тему в этом разделе и понял, что изобрел велосипед. Так вот, по конструкции велосипеда есть вопросы smile.gif

В своей системе я генерирую ключ по формуле
md5 (uniqid() * mt_rand() % 1000)
и записываю его в печеньки и в таблицу аккаунтов в базе каждый раз, когда используется автологин. Этот способ представляется достаточно надежным, но есть проблема — при выходе из учетной записи или использовании автологина одним из браузеров или машин пользователя автологин на остальных браузерах и машинах, естественно, сбрасывается (ключ-то генерируется по новой). С другой стороны, долговременное (сравнимое с временем жизни учетки) создание «статического» ключа сводит на нет смысл использования такой системы вообще (вероятность перехвата ключа растет со временем). А между тем, в большинстве систем авторизации эта проблема как-то обходится (в жж, вконтакте и так далее) — можно хранить сколько угодно «запомненных» сессий авторизации и заходить с разных машин.

Так какая есть альтернатива для вышеописанного способа?



Спустя 4 часа, 43 минуты, 16 секунд (22.06.2010 - 10:53) jetistyum написал(а):
паралельно генерировать ключи в случае успешной авторизации, записывать их в табличку .. (один акк может иметь одновременно несколько ключей ) и удалять ключ только при логаут-е . старые ключи убивать по тайм-ауту .. например 20 дней после последнего использования (при авториазации с таким ключом нужно ставить поле last_login в текущую дату )
примерно так.

Спустя 3 часа, 44 минуты, 22 секунды (22.06.2010 - 14:37) Безухов написал(а):
уж очень громоздкой получится система, по-моему. это каждый раз проверять весь список имеющихся ключей на совпадение с тем, что в печеньке, ещё и к каждому ключу прицепить время создания (а что, кстати, правда автологин через некоторое время сбрасывается? я думал, я в свой жж, например, могу даже через год зайти после последнего посещения. такое вроде только на яндексе есть из тех систем, что я встречал).

Спустя 1 день, 4 часа, 17 минут, 44 секунды (23.06.2010 - 18:55) vagrand написал(а):
Хмм, лично мне непонятен сам принцип создания уникального хеша для каждой авторизации?
Обычно в куку авторизации записывается 2-а параметра:
1. ID юзера;
2. Хеш который вычисляется примерно следующим образом: md5($login . $password . $sekretKey);

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

Спустя 5 минут, 52 секунды (23.06.2010 - 19:01) twin написал(а):
vagrand

Цитата
Обычно в куку авторизации записывается 2-а параметра:
1. ID юзера;
2. Хеш который вычисляется примерно следующим образом: md5($login . $password . $sekretKey);

Обычно кто это делает?

Спустя 1 час, 54 минуты, 9 секунд (23.06.2010 - 20:55) vagrand написал(а):
Обычно это делаю я.

Спустя 38 минут, 28 секунд (23.06.2010 - 21:34) twin написал(а):
Вот так и пиши. А то человек действительно подумает, что все обычно делают такие глупости.

Спустя 3 минуты, 58 секунд (23.06.2010 - 21:38) vagrand написал(а):
Что-то я не совсем понял твой месаг. Ты считаешь что мой подход неверен? Если да то обоснуй плз.

Спустя 8 минут, 5 секунд (23.06.2010 - 21:46) twin написал(а):
Вытаскивать в куку приватную и столь значимую информацию, пусть три раза шифрованную и соленую - явная подстава пользователя.

Начиная с личного идентификатора. Это уже информация. А уж вычислить алгоритм "шифрования", имея свой акк (читай куку) и естественно зная логин и пароль - пара пустяков.

Это культура разработчика - основа безопасности пользователя.

Ну а если ты используешь индивидуальный сикреткей, то скажи, для чего вообще хэшировать вместе с ним пароль? Какой в этом смысл?
Идентифицировать можно именно по этому ключу.

Собственно что и делал топикстартер.

Спустя 9 дней, 16 часов, 23 минуты, 34 секунды (3.07.2010 - 14:09) Guest написал(а):
Ну, автологин вообще штука потенциально опасная — достаточно перехватить этот самый уникальный ключ, и можно пользоваться аккаунтом практически бесконечно (а кстати, идея — дать возможность пользователю самому контролировать сеансы, а то вдруг, например, в интернет-кафе забыл отключить — зашел в профиль, отключил).

Но можно ли это организовать проще, чем предлагает jetistyum, но так же безопасно?

Спустя 24 дня, 6 часов, 32 минуты, 3 секунды (27.07.2010 - 20:41) Безухов написал(а):
ау, товарищи

Спустя 1 месяц, 17 дней, 1 час, 3 минуты, 59 секунд (14.09.2010 - 21:45) Безухов написал(а):
ап
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.