0

可能重复:
PHP 会话或 cookie

我们正在开发一个新项目,我们希望从页面到页面跟踪有关用户的一些信息,在安全性、可靠性和服务器使用方面,使用会话还是使用 cookie 更好?使用一种方法或另一种方法的优缺点是什么。

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

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

谢谢

4

1 回答 1

6

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

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

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

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

于 2012-12-15T10:09:51.567 回答