禁用 Cookie 时,PHP 会话如何工作?

2022-08-30 22:08:55

我试图研究这种机制,但只找到提示,这些不是很一致。会话_id如何发送到浏览器,当用户请求新页面时,如何指示浏览器返回会话?

谢谢 克里斯


答案 1

PHP将做2件事:

  • 它将重写所有链接以传递额外的GET参数,通常是PHPSESSID,但这可以通过在php中设置 session.name 来更改.ini
  • 它将在所有打开标记后添加具有相同名称的隐藏输入。<form>

请注意,这是一件危险的事情,因为任何您(例如,复制/粘贴包含PHPSESSID参数的URL)的人都将能够在网站上共享您的登录会话 - Web服务器没有简单的方法来告诉您与您发送链接的人不同...


答案 2

PHP自己的会话模块支持从GET和POST数据(除了cookie)中获取会话ID。您可以使用 http://uk.php.net/manual/en/session.configuration.php#ini.session.use-trans-sidhttp://uk.php.net/manual/en/session.configuration.php#ini.url-rewriter.tags 让php处理id的转发。但无论如何,请记住,特别是如果您使用GET来传输ID,则更有可能是某些用户意外泄露其(有效)会话ID。

基础机制不关心会话 ID 如何从客户端传输到服务器。只要您将“正确”值传递给session_id()它就可以工作 - 即使您做了一些奇怪(愚蠢?)的事情,例如滥用etag-header作为会话ID的工具;-)


推荐