После публикации этого некоторое время назад я решил создать свою собственную возможность регистрации / аутентификации в PHP. Я хотел бы, чтобы кто-нибудь указал на недостатки / возможности для улучшения, особенно в отношении того, что хранится на сессии ...
Логический поток:
1 - Пользователь регистрируется с использованием электронной почты в качестве имени пользователя, «имени сайта», которое затем образует часть любого URL-адреса, к которому он будет иметь доступ, и пароля длиной не менее 6 символов, который должен содержать буквы и цифры (я знаю, это может быть сильнее)
2 - при условии, что пользователь и сайт уникальны, я сохраняю их оба вместе со случайно сгенерированной строкой (солью) в строке в таблице аутентификации в моей базе данных. Затем я беру пароль пользователя, объединяю его с солью и сохраняю хэш md5 этого пароля с солью в той же строке базы данных
3 - Когда пользователь входит в систему, я беру пароль, который он ввел, и соединяю его с солью, создаю хэш md5 и сравниваю его с тем, что я сохранил в базе данных - если они совпадают, пользователь ввел правильный пароль, и его имя пользователя записано в сеансе
4 - При каждом запросе я использую имя пользователя, сохраненное в сеансе, для запроса базы данных и считывания имени сайта, связанного с этим пользователем. Затем я сравниваю это с именем сайта в самом URL-адресе, и, если они совпадают, я устанавливаю переменную, доступную для остальной части или сценария (не глобальная переменная, она просто читается моим контроллером, который решает, может ли пользователь видеть определенной страницы), если два имени сайта не совпадают, пользователь перенаправляется обратно для входа в систему
Меня беспокоит, может ли кто-нибудь написать сеанс и, таким образом, иметь возможность доступа к страницам людей, если они знают имя пользователя, с которым они подписаны? Как бы вы помешали этому?
Прежде чем кто-либо обвинит меня в халатности, кстати, это личный проект для обучения - я не раскрываю данные клиентов!