我很想知道会话管理和Cookie如何在PHP中运行。我想知道它们的基本机制,例如浏览器如何与cookie交互,以及如何使用cookie来验证服务器中的会话数据。
是否有任何网络资源可供我学习?
答案 0 :(得分:2)
特别是在PHP中,会话的标准方式是PHP生成随机会话ID,并将其放入cookie中。 (默认情况下称为PHPSESSID)此cookie由浏览器通过在本地保存在用户计算机上来处理,并随每个请求一起发送到它所属的域。
此会话ID随后用于引用服务器计算机上的数据存储,位于Linux上的apache安装上的/ tmp /中的标准。这就是$ _SESSION数组中的所有内容存储在请求之间的地方。
正如您所注意到的,这只是与cookie一样安全,因为用户和服务器之间没有真正的身份验证,用户是会话ID的“真正”所有者。这意味着通过嗅探cookie并在攻击者的机器上插入带有会话ID的cookie,可以实现所谓的“会话劫持”。这可用于接管网页上的帐户,并浏览它,就像您是原始用户一样,因为您的服务器。
还有一种替代的,甚至更不安全的方式来保持PHP支持的会话。这是通过将会话ID作为GET变量与每个链接一起发送来完成的。正如您可能注意到的,这意味着如果用户只是复制粘贴其中一个链接,他将放弃所有凭据。 =)
可在the PHP manual中找到更多信息。
答案 1 :(得分:1)
访问您网站的访问者会被分配一个唯一ID,即所谓的会话ID。这可以存储在用户端的cookie中,也可以在URL中传播。
此唯一ID是一个大的随机数,存储在服务器端,以便在客户端下次发出新请求时与其匹配。它通常进入/ tmp目录。
答案 2 :(得分:0)
Cookie是与HTTP地址关联的一些数据。 即。
1/ Browser requests www.google.com
2/ www.google.com response includes setting a cookie
3/ From this point on and as long as the cookie is valid (there's an expiry time associated with it), each subsequent request made by the browser to www.google.com/anything includes the cookie above
详细信息:http://en.wikipedia.org/wiki/HTTP_cookie
cookie允许在其他无状态HTTP协议中创建会话,因为它允许客户端 - 服务器会话与与服务器交互的其他客户端隔离。