Я хотел бы создать простую систему входа / регистрации пользователей, используя PHP и mysql. Мне не нужно получать какую-либо информацию сверх того, что необходимо для входа и выхода пользователя. Я хочу убедиться, что система безопасна.
В настоящий момент я понимаю, как это должно работать:
Регистрация
Пользователь вводит свой адрес электронной почты, пароль и пароль для подтверждения.
Сценарий PHP проверяет, совпадают ли пароли, и является ли адрес электронной почты действительным и его еще нет в базе данных.
Он хэширует пароль вместе со случайной солью и сохраняет соль и полученный хешированный пароль в базе данных. (Подходит ли функция php md5 для этого? Я не совсем уверен, как эта часть работает.)
Сохранить код подтверждения электронной почты в базе данных и отправить на указанный адрес электронной почты ссылку на веб-сайт, содержащий этот код для проверки?
Логин
Пользователь вводит свой адрес электронной почты и пароль.
Сервер ищет электронную почту в базе данных и получает соль. Затем хэширует соль с паролем, который пользователь только что предоставил, чтобы проверить, совпадает ли он с паролем в базе данных.
Как сохранить сеанс после входа в систему. С сессией PHP? Печенье? Что должно храниться в куки для запоминания пользователя между посещениями?
Мне просто хотелось бы убедиться, что описываемый мной процесс является точным и безопасным способом регистрации / входа пользователя. Кроме того, какие есть хорошие учебники с дополнительной информацией.