PHP会话VS PHP cookie

时间:2012-12-15 08:52:25

标签: php session cookies

  

可能重复:
  PHP session or cookie

我们正在开发一个新项目,我们希望在安全性,可靠性和服务器使用方面跟踪页面之间有关用户的一些信息。使用会话或cookie更好吗?使用一种方法或另一种方法有什么起伏。

例如,跟踪用户是否已成功登录,或跟踪用户选择的语言。

基本上我们想知道如何决定是否应该使用cookie或会话,显然如果我们想要跟踪在不同场合甚至不同日期不同访问页面中发生的数据,答案是使用cookie ,但如何在不关闭浏览器的情况下跟踪页面导航。

由于

1 个答案:

答案 0 :(得分:6)

cookie 是服务器在HTTP响应标头中发送给客户端的一小段文本。客户端将在本地存储它并将其返回到服务器,并在请求标头中包含每个请求。这允许在其他无状态HTTP协议中实现一些状态

会话是通常在Cookie 之上实现的概念。服务器将无意义的唯一会话令牌(随机ID)作为cookie发送到客户端,客户端在每次请求时都返回它。服务器端此id与某些数据相关联。每次客户端在请求中将其会话令牌发送回服务器时,服务器都会查找与该令牌关联的数据。

通过将会话ID嵌入到所有URL或表单请求中,也可以在客户端和服务器之间来回传输会话ID,它不必是cookie。然而,在URL中嵌入会话ID是一个坏主意,因为如果URL在不同用户之间共享,则允许意外会话传输(见下文)。这些天会议通常使用客户端cookie实现。

从概念上讲,cookie和会话非常相似,它们都在HTTP中实现状态。不同之处在于,cookie只能存储少量数据,这些数据在每次请求时来回传输,并且可由用户编辑(因为它存储在客户端上的信息);而会话存储服务器端的所有数据,因此仅受服务器资源的限制。唯一的漏洞会话是,如果用户可以猜测或窃取另一个用户的会话ID,他可以冒充该用户。这被称为session hijacking。普通的cookie没有任何安全性,不应该用于任何重要的事情(例如,用户可以查看和编辑内容,因此将userloggedin=yes存储在cookie中是最糟糕的事情)。