@websiteserf

Какими путями можно пройти в целях доработке системы авторизации?

Алгоритм моего скрипта следующий:
При регистрации аккаунта, создается два хранилища (записи в таблице), первая запись в таблице accounts, сюда пишутся сами данные пользователя, email пароль в sha512+соль и случайно сгенерированная соль через хеш sha512 из rand().
Во второй таблице sessions создается запись в которую пишутся ip (последний использованный) и token, токен генерируется абсолютно случайно и меняется при авторизации. Копия токена пишется в сессию.

ВАЖНЫЙ МОМЕНТ ДЛЯ ДОРАБОТКИ:

Авторизация проверяется так: производится выборка из sessions по ip и сверяется токен из куки и таблицы, если равно, то берется id пользователя и идет выборка уже из accoins where id=id

Проблема в следующем, я нахожу ее критичной: Если пройдет две авторизации то впоследствии думаю сами понимаете, авторизует одного. Как можно доработать/переделать метод привязки сессии к машине пользователя, ведь проблема вскрывается собственно в wi-fi сетях и проксиках...

Привязку к user-agent, flash считаю нерациональной, если я не прав поправьте меня.
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
не изобретать велосипед, как вам такой путь?

пароль в sha512+соль и случайно сгенерированная соль через хеш sha512 из rand().

Я запутался пока читал это, используйте стандартные функции php, без всяких "сгенерировал, захешировал куском другого хеша и т.д."
password_hash
password_verify

Авторизация проверяется так: производится выборка из sessions по ip и сверяется токен из куки и таблицы, если равно, то берется id пользователя и идет выборка уже из accoins where id=id

т.е. если мне попался динамический IP другого пользователя я попаду под его аккаунт? А логин и пароль вообще не нужны или как?

Для начала определитесь нужен ли вам вообще токен? Токен генерируют для того чтобы авторизация жила любое количество времени. Для обычной авторизации это вообще не нужно.

Если хотите вечную авторизацию:
Токен генерируйте по IP+useragent.
Других вариантов тут нет и не надо.

В чем проблема с двумя авторизациями? Будет два токена для одного пользователя, и авторизация останется активной в двух местах.
Ответ написан
Пожалуйста, не используйте rand для генерации соли, guid, id сессий,... - не секурно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы