Подтвердить что ты не робот

Может ли пользователь изменить значение $_SESSION в PHP?

это пересекает мой разум, и мне интересно, возможно ли, насколько безопасно хранить информацию в переменной $_SESSION PHP?

4b9b3361

Ответ 1

Сохранение переменных в переменной $_SESSION имеет два потенциала для "отсутствия безопасности".

  • Первый, как описано другим ответом, называется "фиксация сеанса". Идея здесь заключается в том, что, поскольку идентификатор сеанса хранится в файле cookie, идентификатор может быть изменен на идентификатор другого пользователя. Это не проблема, если пользователь получает новый идентификатор каждый отдельный сеанс, поэтому очень сложно найти идентификатор текущего рабочего сеанса и захватить его.
  • Вторая полностью зависит от вашего кода. Если ваш код теряет значения секретной информации, хранящейся в $_SESSION, тогда она небезопасна. Если ваш код позволяет пользователю контролировать значения этой информации, он небезопасен. В противном случае, если что-то находится в переменной $_SESSION, и ваш код никогда не позволяет пользователю видеть его или записывать в него, тогда он безопасен.

Ответ 2

Работа в PHP сеанса, сохраняя cookie PHPSESSID на компьютере конечного пользователя, который действует как ключ доступа для информации о сеансе на сервере. Это значение cookie представляет собой хешированную строку (безопасность которой зависит от ваших настроек PHP), которая используется для привязки конкретного браузера к определенным заданным вами значениям сеанса.

Эта строка выглядит примерно как b420803490a9f0fe8d6a80657fec3160. Таким образом, конечный пользователь может изменить эту строку, но тогда их сеанс станет недействительным, поскольку он почти наверняка не будет соответствовать тому, который хранится PHP, и у них не будет доступа к данным.

Существует риск того, что кто-то PHPSESSID подвергнется риску, и люди используют это для захвата другой сессии.

Ответ 3

$_SESSION полностью сохраняется на сервере, поэтому пользователь не может его изменить. Тем не менее, можно использовать эксплойты захвата сеанса, когда пользователь подключается к другому сеансу пользователя.

Ответ 4

Данные сеанса хранятся на сервере.

Ответ 5

Если на клиентском компьютере находятся менее безопасные $_COOKIES, $_SESSION хранится на сервере. Его местоположение определяется session.save_path php.ini. Однако есть еще проблемы с безопасностью, такие как фиксация сеанса