Всем привет. Перерыл кучу сайтов в поисках примера безопасной авторизации на PHP, но так и не нашел ничего толкового (либо материал уже устарел).
Но все же набросал кое-какой алгоритм.. Знатоки, пожалуйста, подскажите, где его проблемные места и как их решить.
И так:
- Ввод пользователем логина и пароля
- Хеширование пароля на стороне клиента. Примерно так: sha1(sha1(password, login) + randomKey). randomKey генерируется случайно при каждой новой авторизации, для того, что бы передавать на сервер постоянно разный хеш (защита от перехвата).
- На сервер отправляем полученный хеш и randomKey
- Сверяем на сервере хеш клиента и и sha1(хэш_с_сервера + randomkey)
- Если авторизация успешна, то записываем в куки некий "ключ" сессии.
Далее, допустим по ключу 123 ($_SESSION['123']) мы будем получать необходимые данные о пользователе (логин, заход последний и т.д.)
Собственно, вот такой, не сложный алгоритм. Но вопрос стоит в этом: как защититься от перехвата сессий (привязка по IP спасает ровно до того момента, пока не сменится IP :( ).
И какие есть более глобальные проблемы, у такого алгоритма?