Intereting Posts

Является ли это безопасным использованием переменных сеанса?

Я использовал $ _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'] будет доступен пользователям или нет. Если это доступно, страница будет угрожать, потому что пользователь может вручную изменить идентификатор пользователя и получить доступ к другой учетной записи, которую он желает.

Я не в безопасности. Пожалуйста посоветуй! Что я могу сделать?

Примечание. Я пытаюсь сделать код максимально простым. На данный момент никакой уловки не задействован.

Related of "Является ли это безопасным использованием переменных сеанса?"

Это очень хорошо, вот несколько других советов для управления сессиями:

  1. Не принимайте идентификаторы сеанса из переменных GET / POST: идентификаторы сеансов в URL (строка запроса, переменные GET) или переменные POST не рекомендуется, так как это упрощает эту атаку. Легко создавать ссылки на формы, которые задают переменные GET / POST.

  2. Восстановите SID по каждому запросу: в PHP используйте session_regenerate_id (). Каждый раз, когда уровень доступа пользователя изменяется, необходимо восстановить идентификатор сеанса. Это означает, что, хотя злоумышленник может обмануть пользователя в принятии известного SID, SID будет недействительным, когда злоумышленник попытается повторно использовать SID.

Ваш код уязвим для фиксации сеанса и атак на захват сеанса. См. http://phpsec.org/projects/guide/4.html для получения дополнительной информации.

По мере того, как вы создаете более крупные приложения с более привлекательными приложениями, вы также захотите быть осторожными, как вы обрабатываете ведение журнала пользователя и обработку других связанных с сеансом аспектов, таких как эскалация привилегий. Безопасное управление сеансами и входами – это сложный зверь.

Реализация надежной аутентификации сложна. Если вы не делаете это как академическое упражнение, я настоятельно рекомендую использовать библиотеку, предоставленную вашей инфраструктурой, если вам посчастливилось иметь хороший.

Вы также захотите рассмотреть такие вещи, как следующее:

  • Не разрешайте идентификатор сеанса. [фиксация сессии]
  • Когда изменения или учетные данные изменяются (например, потому что пользователь уже вошел в систему или вышел из системы), то сразу же аннулирует сеанс и запускает новый.
  • Предоставьте функцию выхода из системы и обязательно исключите сеанс при выходе из системы.
  • Установите cookie сеанса в HttpOnly. Предположим, что HTTPS и alo настроили cookie только для защиты.
  • Рассмотрите возможность ограничения срока действия сеанса, чтобы включить проверку другой информации, которая помогает совместить пользователя, например user-agent. [захват сеанса]
  • Всегда заканчивайте сеансы после неиспользования и не выполняйте «сохранить меня в системе», повторно подключив пользователя к своей старой сессии http.
  • Убедитесь, что все связанные с сеансом данные уничтожены, когда сеанс недействителен, независимо от того, где он хранится. Новый пользователь, входящий, может просто получить назначенный идентификатор сеанса, который использовался ранее. Этот новый сеанс не должен иметь никакого доступа к данным сеанса, которые были установлены ранее против этого идентификатора сеанса.

$ _SESSION – один из супер-глобалов на стороне сервера. Он недоступен пользователям или передан с вашего сервера каким-либо образом.

Да, это в значительной степени правильная идея.

Вот пара ресурсов, которые могут помочь, как с пониманием безопасности сеанса и безопасного программирования в целом:

http://phpsec.org/projects/guide/4.html http://phpsec.org/projects/guide/