【发布时间】:2011-10-18 05:45:45
【问题描述】:
我想知道的是,PHP $_SESSION 变量是否可以在客户端更改。例如,如果我做$_SESSION['username'] = $username; 有人可以以某种方式更改我的$_SESSION['username'] 变量的值吗?
【问题讨论】:
-
php - 服务器端脚本
标签: php session client-side
我想知道的是,PHP $_SESSION 变量是否可以在客户端更改。例如,如果我做$_SESSION['username'] = $username; 有人可以以某种方式更改我的$_SESSION['username'] 变量的值吗?
【问题讨论】:
标签: php session client-side
SESSION 超全局的内容不能更改。这存在于服务器上,客户端无法访问它。
但是,会话 id 会传递给客户端,这样当客户端与服务器联系时,服务器就知道要使用哪个会话。
此值可以更改(请参阅 Calums 答案以防止这种情况有关信息,请参阅 http://php.net/manual/en/session.security.php)。这将允许用户使用其他人的会话(但不会更改会话的值)。
【讨论】:
PHP 是一种服务器端编程语言,$_SESSION 超全局变量只能在服务器上直接访问。使用“正常”的 php 会话,包含在 ESSSON 超全局中的数据在 cookie 中在浏览器和服务器之间来回传递。因此从技术上讲,可以通过修改 cookie 在网络浏览器中使用 Javascript 修改会话。
但请注意,任何尝试做这样的事情都可能是一个糟糕的想法,而且很可能有一种更简单的方法来完成你想要做的任何事情。
编辑:我问的这个问题可能对你有用 Codeigniter/PHP sessions security question
【讨论】:
不完全是,但您可以使用 AJAX 模拟它。只需编写一个更改值的php文件,然后从AJAX调用它,只需执行它并更改该值即可。
希望对你有所帮助。
【讨论】: