Был придуман новый алгоритм для аутентификации пользователей на сайте, о котором и хочу рассказать :)
Есть у нас формочка, в которой пользователь заполняет поля логин и пароль, для более безопасной передачи пароля от клиента к серверу – пароль нужно передавать не в открытом виде, а в зашифрованном, либо использовать хэш пароля (далее просто хэш). Для этой цели можно использовать JavaScript для хэширования пароля на стороне клиента.
Внимание!!! Данная статья осталась для истории, в этом алгоритме есть уязвисмость при передаче пароля на сервер...
После получения хэша - сервер дополнительно производит хэширование пароля, так как в базе хранится не простой хэш, а с "солью" :) Далее производится поиск записи в БД по логину (полученный с формочки) и сравниваем сгенерированый хэш с хэшом в БД, если всё совпадает, то формируем рандомное число, с помощью которого "шифруем" айдишник пользователя и вписываем его в куки, а полученое рандомное число прописываем в сессию, так же в сессию нам нужно прописать логин и какую-нибудь информацию о браузере.
Шифрование айдишника происходит любым арифметическим действием с рандомным числом, допустим айди умножаем на рандомное число.
Но это ещё не всё :) при переходе на страницы сайта срабатывает алгоритм, который сверяет данные в куках и сессии, при чём при проверке формируются новое рандомное число, новый "зашифрованный" айдишник, остальное всё остаётся + дополнительная проверка с помощью логина в сессии, а также по информации браузера. Если вдруг что-то не совпадает, то происходит уничтожение сессии и кук.
Кто занимается программирование, тот без проблем сможет реализовать данный алгоритм. Лично я уже его использую в одном своём проекте…
© Филимошин В. Ю., 2012