Можно ли изменить переменную $_SESSION на стороне клиента?

Возможный дубликат:
PHP Может ли клиент когда-либо устанавливать переменные $_SESSION?

То, что я хотел бы знать, заключается в изменении переменной PHP $_SESSION на стороне клиента. Если, например, я делаю $_SESSION['username'] = $username; Может кто-то изменить значение моей переменной $_SESSION['username']?

Ответ 1

PHP - это серверный язык программирования, а суперглобальный $_SESSION доступен только на сервере. С "нормальными" сеансами php данные, содержащиеся в суперглобале SESSON, передаются между браузером и сервером в файле cookie. Так что технически можно изменить сеанс с помощью Javascript в веб-браузере, изменив файл cookie.

Но обратите внимание, что любая попытка сделать что-либо подобное, вероятно, является ужасной идеей, и, скорее всего, гораздо более простой способ выполнить все, что вы пытаетесь сделать.

Изменить: этот вопрос, который я задал, может быть вам полезен Вопрос безопасности Codeigniter/PHP

Ответ 2

Содержимое суперглобала SESSION не может быть изменено. Это живет на сервере, и у клиента нет доступа к этому.

Однако идентификатор сеанса передается клиенту, так что, когда клиент связывается с сервером, сервер знает, какой сеанс использовать. Это значение может быть изменено ( См. Ответ Calums для предотвращения этого См. http://php.net/manual/en/session.security.php для информации). Это позволит пользователю использовать сеанс пользователя elses (но не изменять значение сеанса).

Ответ 3

Не совсем, но вы можете имитировать его с помощью AJAX. Просто напишите php файл, который изменит значение, а затем вызовите его из AJAX, просто для его выполнения и изменения этого значения.

Надеюсь, это поможет вам.