Итак, я знаю, что это было сделано до смерти, но все ответы, которые я встречал, были чрезвычайно запутанными/противоречащими друг другу, или их объяснения были неполными, и я стараюсь идти в ногу и делать это самостоятельно все доступные ресурсы, но я думаю, что где-то я потерялся. Я хотел бы прояснить это раз и навсегда. Благодарим вас за ваше терпение заранее, так как это может оказаться немного длинным.
У меня есть небольшой ящик для входа в верхней части моей страницы, который останется постоянным, если пользователь не войдет в систему. Если они вошли в систему, то вместо окна входа они приветствие с их именем в нем.
Проверка сеанса
Итак, прежде всего, вот диаграмма (к моему пониманию до сих пор), как проверить, что пользователь может получить доступ только к содержимому "только члены". (этот код находится в верхней части страницы для проверки и установки переменных, таких как $loggedin = true;
)
В своем роде, мой $_SESSION['loggedin']
- это просто имя пользователя. По моему мнению, сеансы могут быть сфальсифицированы или захвачены из одного домена, поэтому я знаю, что это очень неуверенно (например, злоумышленник может каким-то образом сделать сеанс, содержащий другое имя пользователя и voilà - мгновенный доступ к этим материалам пользователей). Но я не знаю, как я должен проверять сеанс. Единственный способ, который я могу себе представить, - это подключиться к базе данных каждый раз, когда загружается страница, и проверить хэш-код MD5 или что-то из базы данных (и обновить его), но я полагаю, что это создаст много ненужного трафика сервера и я "Почти наверняка есть лучший способ сделать это".
Вход в систему
Вот диаграмма того, что происходит, когда пользователь входит в систему (И должен ли отображаться приветствие или окно входа в систему.)
По большей части я довольно уверен в этой части (надеюсь), но я не знаю, что должен содержать мой хэш MD5, чтобы позже пересмотреть хэш с тем, что было в базе данных, тот, который находится в cookie и только что созданный хэш, чтобы убедиться, что cookie не был вызван злоумышленником. Кроме того, как указано в комментариях ниже, я, вероятно, собираюсь отказаться от использования IP-адреса в хэше позволяют пользователям оставаться в системе в нескольких местах (например, их телефон и ноутбук).
Итак, мои вопросы:
- Как проверить мои сеансы не поддельные?
- Как я могу проверить, что мои файлы cookie не поддельные?
- Может ли мой метод регистрации быть достаточно безопасным после проверки на месте?
- Есть ли что-то важное, что я забыл?
Если есть что-то, что вы хотели бы задать, сообщите мне в комментарии, и я с удовольствием отредактирую свой вопрос с такой информацией, как я могу предоставить.