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