2011-08-02 90 views

回答

4

PHP是一种服务器端编程语言,$ _SESSION超全局只能在服务器上直接访问。通过'正常的'php会话,SESSON超全局中包含的数据将通过cookie在浏览器和服务器之间来回传递。所以从技术上讲,可以通过修改cookie来在Web浏览器中用Javascript修改会话。

但请注意,任何尝试这样做的尝试都可能是一个糟糕的想法,而且很有可能是一种更简单的方法来完成您想要做的任何事情。

编辑:这个问题我问可能是使用你 Codeigniter/PHP sessions security question

+2

修改cookie不会让你改变会话超全球的值,但会让你使用另一个会话(假设你猜对了一个正确的会话ID)。 – Jim

+0

我的担心是**用户**是否能够更改此变量,以及我如何保护它。 –

+0

这是可行的,不简单。我试图回答这个问题:是否有可能。这是个好主意吗?号码 –

1

不完全是,但您可以使用AJAX进行模拟。只需编写一个更改值的php文件,然后从AJAX调用它,只需执行它并更改该值即可。

希望这可以帮助你。

+0

我已经很熟悉了,因为我已经使用它很长一段时间了,但是,我的担心是用户是否能够更改此变量... –

+0

好的,我认为这是我这样做的方式... – elvenbyte

5

的SESSION超全局中的内容不能改变。它位于服务器上,客户端无法访问它。

但是,会话ID被传递给客户端,以便当客户端与服务器联系时,服务器知道要使用哪个会话。 该值可能会更改(请参阅Calums回答以防止此错误有关信息,请参阅http://php.net/manual/en/session.security.php)。这将允许用户使用某人elses会话(但不会更改会话的值)。

+0

因此,使用某人的PHPSESSID,某人可以劫持他们的会话,但无法更改SESSION数组的内容? –

+0

@George正确,请参阅Calums回答以防止劫持。 – Jim

+0

@Jim这个着名的Calum的答案在哪里? – carla

相关问题