jcmax
@jcmax
Супер Пользователь

Как часто менять hash при аутентификации в php?

Добрый день,

Подскажите пожалуйста у меня есть авторизация и аутентификация в одном методе

function login(string $email, string $pass, bool $isHash=false) {
   
    #code...
}


а так же в базе
user_password // в котором хрониться хеш пароля для авторизации
user_hash // в котором хрониться сгенерированный хеш для аутентификации

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

или его вообще не должно быть и использовать хеш пароля для сохранения в куки

и можно ли использовать _SESSION для хранения этих хешей ( что будет если 1000 человек будет хронить свои хеши в сессии)

заранее спасибо.
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
как бы не хранились данные они все равно физически расположены в файлах, логичнее хранить хэш в бд и не более дня (хотя тут конечно все зависит от его типа и длины).
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL,
  `login` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `last_login` int(11) UNSIGNED,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `login` (`login`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `user_tokens` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` int(11) UNSIGNED NOT NULL,
  `user_agent` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `created` int(11) UNSIGNED NOT NULL,
  `expires` int(11) UNSIGNED NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `token` (`token`),
  KEY `fk_user_id` (`user_id`),
  KEY `expires` (`expires`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

ALTER TABLE `user_tokens`
  ADD CONSTRAINT `user_tokens_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Токен авторизации клиента - должен храниться на клиенте (в куках).
2. Срок жизни токена авторизации клиента - 3-5 дней.
3. Смена/обновление токена авторизации клиента - "прозрачная"для конечного пользователя.
(Это всё было только о конкретном веб-браузере без привязки к аккаунту пользователя.)

А токен авторизации пользователя (после ввода логина и пароля) - выдаётся только после успешной авторизации клиента.

Для успешной авторизации проверяется, что браузер(клиент) - авторизованный, и пользовательские логин с паролем - верные.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы