2012-08-13 169 views

回答

3

除非您已启用PHP trans_sid选项(BAD创意),否则POST与会话值无关。这是通过一个标准的cookie调解的。

Cookie受同域安全设置约束 - 它们可以在同一域中的主机之间共享(例如foo.example.com和bar.example.com),但是Amazon cookie不能与雅虎共享。

+0

不完全正确 - session.use_trans_sid关闭并不禁止php使用请求中通过post字段传递的会话id。 'session.use_only_cookies'是最接近的设置。我相信你知道这一点,但你的文章大多数读者可能不知道。 – goat 2012-08-13 22:46:17

+0

您肯定可以手动将会话ID插入查询字符串,隐藏表单字段,等等等等,但这是一个主要的安全漏洞,并且trans_sid关闭时,PHP将不会自动获取该会话ID。 – 2012-08-14 00:53:16

+0

它*将*从post/get中的id恢复一个会话,除非你启用了'session.use_only_cookies',并且这种方式多年来一直如此。尝试一下。 http://pastebin.com/xhYa33Kp – goat 2012-08-14 02:07:43

0

不,他们没有。即使发送会话cookie,您可以使用cURL POST进行会话,也会引用仅存在于请求服务器上的会话。

0

会话变量是特定于服务器的。如果会话ID设置正确,并且它们正在使用共享会话数据存储区(例如memcached),它们只会跨越另一台服务器。