Насколько в PHP безопасно хранить данные в $_SESSION?

После некоторого изучения этого вопроса, пришел к выводу, что довольно безопасно: файл создается на сервере, ни в коем образом не передается клиенту. Может я заблуждаюсь?

И что может произойти с данными, если сервер не поддерживает кукисы, а у клиента они включены?
  • Вопрос задан
  • 6448 просмотров
Решения вопроса 1
@vasenin26
Абсолютно верно. PHP хранит сериализованные данные сессии в файле на сервере. Между страницами передаётся только идентификатор сессии и передаётся он как раз с помощью cookies. Теоретически можно украсть идентификатор сессии тем самым получив доступ к данным сессии с другого устройства, но довольно просто можно сделать дополнительную защиту привязав сессию к IP например (хранить в сессии и каждый раз проверять, при изменении IP клиента - сбрасывать сессию) или же используйте SSL на своём сайте если на нём имеется достаточно важная информация, в остальных случаях я думаю можно не заморачиватся, но всё же следите за тем что вы делаете - безпосными ваши скрипты делаете вы сами, а не PHP.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@IgoNsk
backend web developer
После некоторого изучения этого вопроса, пришел к выводу, что довольно безопасно: файл создается на сервере, ни в коем образом не передается клиенту. Может я заблуждаюсь?

нет - не заблуждаешься, клиенту передается только идентификатор сессии либо через COOKIE, либо через GET параметр запроса (если COOKIE не поддерживаются клиентом и включена соответствующая настройка в PHP на сервере), чтобы рпи открытии следующей страница сервер понял что это пять тот же самый пользователь.

И что может произойти с данными, если сервер не поддерживает кукисы, а у клиента они включены?


во первых, может наоборот - выключены в браузере куки? Ибо как написал ты, то просто сессия будет идти через GET параметр - то все штатно.

во вторых, с какими данными? если механизм сессий не работает, то никаких данных и нет.
Если же ты решил потереть или поменять идентификатор сессий в браузере, то данные на сервере будут храниться то тех пор, пока у них не истечет срок жизни (который указывается в настройках сессий php).

p.s. Я бы посоветовал еще поразбираться с этим механизмом. Т.к. судя по вопросам ты не до конца уловил суть этого всего)
Ответ написан
Anonym
@Anonym
Программирую немного )
файл создается на сервере, ни в коем образом не передается клиенту. Может я заблуждаюсь?

Если у вас сессия хранится в файлах, то вы правы. Но сессию можно хранить в другом месте, например в БД. В общем случае разницы нет, данные сессии клиенту переданы не будут (если вы их не передадите), на клиент уйдет только идентификатор сессии.

И что может произойти с данными, если сервер не поддерживает кукисы, а у клиента они включены?

Как вы организуете работу с сессиями, если "сервер не поддерживает кукисы"? Идентификация клиента в общем случае происходит так: сервер получает из клиентской куки идентификатор сессии, находит по нему данные сессии.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы