это пересекает мой разум, и мне интересно, возможно ли, насколько безопасно хранить информацию в переменной $_SESSION PHP?
Может ли пользователь изменить значение $_SESSION в PHP?
Ответ 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. Однако есть еще проблемы с безопасностью, такие как фиксация сеанса