Я использовал $ _SESSION ['name'] для обработки данных со страницы на страницу. В основном я использовал его для того, чтобы пользователь регистрировался между страницами. На каждой странице я проверяю, является ли значение $ _SESSION [logged_in '] истинным или нет. Если значение true, заставьте войти в систему. В противном случае сделайте что-нибудь еще.
Вот как я обрабатываю свои сеансы – базовый пример:
<?php session_start(); if($_SESSION['logged_in']) { //show control panel list } else { //show login box. Once user logs in. Once user logs in, //fetch userID, username, etc from database. Also set //$_SESSION['logged_in'] = true. } ?>
Где-то между кодами я делаю следующее:
SELECT * FROM User WHERE userID = $_SESSION['userID'];
Я не уверен, что $ _SESSION ['userID'] будет доступен пользователям или нет. Если это доступно, страница будет угрожать, потому что пользователь может вручную изменить идентификатор пользователя и получить доступ к другой учетной записи, которую он желает.
Я не в безопасности. Пожалуйста посоветуй! Что я могу сделать?
Примечание. Я пытаюсь сделать код максимально простым. На данный момент никакой уловки не задействован.
Это очень хорошо, вот несколько других советов для управления сессиями:
Не принимайте идентификаторы сеанса из переменных GET / POST: идентификаторы сеансов в URL (строка запроса, переменные GET) или переменные POST не рекомендуется, так как это упрощает эту атаку. Легко создавать ссылки на формы, которые задают переменные GET / POST.
Восстановите SID по каждому запросу: в PHP используйте session_regenerate_id (). Каждый раз, когда уровень доступа пользователя изменяется, необходимо восстановить идентификатор сеанса. Это означает, что, хотя злоумышленник может обмануть пользователя в принятии известного SID, SID будет недействительным, когда злоумышленник попытается повторно использовать SID.
Ваш код уязвим для фиксации сеанса и атак на захват сеанса. См. http://phpsec.org/projects/guide/4.html для получения дополнительной информации.
По мере того, как вы создаете более крупные приложения с более привлекательными приложениями, вы также захотите быть осторожными, как вы обрабатываете ведение журнала пользователя и обработку других связанных с сеансом аспектов, таких как эскалация привилегий. Безопасное управление сеансами и входами – это сложный зверь.
Реализация надежной аутентификации сложна. Если вы не делаете это как академическое упражнение, я настоятельно рекомендую использовать библиотеку, предоставленную вашей инфраструктурой, если вам посчастливилось иметь хороший.
Вы также захотите рассмотреть такие вещи, как следующее:
$ _SESSION – один из супер-глобалов на стороне сервера. Он недоступен пользователям или передан с вашего сервера каким-либо образом.
Да, это в значительной степени правильная идея.
Вот пара ресурсов, которые могут помочь, как с пониманием безопасности сеанса и безопасного программирования в целом:
http://phpsec.org/projects/guide/4.html http://phpsec.org/projects/guide/