Как организовать простейшую аутентификацию для одного клиента c его машины?
Как организовать очень простую, примитивную но надёжную систему аутентификации для одного пользователя? Первое что приходит в голову - записывать в сессию что пользователь аутентифицирован если ввел верный пароль.
Но хотелось бы понять, насколько такой вариант безопасен. Как его сделать безопаснее, может проверять имя компьютера? И правильно ли делать через сессию, не могут ее украсть или подменить?
Слишком общий вопрос. Без конкретной задачи сложно что-то сказать.
Плюс вы противоречите сами себе. Сначала вы хотите простейшую аутентификацию, а потом начинаете усложнять и накручивать. А это можно делать бесконечно, можно так и до отпечатков пальца и скана сетчатки дойти.
Абсолютной защиты не существует, всё могут украсть, отобрать, пользователь сам может забыть и т.д. и т.п.
Я бы предложил пользователю вводить пароль, но в базе хранить хэш-пароля. При этом можно реализовать изменение ключа, по которому мы хэшируем пароль. Такая система работает если не состилят пароль с клавиатуры или пользователь не сообщит сам.
Если брать "золотую середину":
1. Открытие формы входа - через страницу подписи: site.com/login#userlogonformcode
2. Определяем финжерпринт и логонкод и если всё совпало - можно открыть форму ввода логина и пароля.
3. Логин-пароль верные - привязываем финжерпринт и IP к токену авторизации и блокируем параллельные сессии.
Всё! Пользователь залогинен.
PS: userlogonformcode, login, pass - выдаём последовательно через ссылку в почте.