PHP session VS PHP cookie



可能重复:
PHP会话或cookie

我们正在开发一个新项目,希望在安全性、可靠性和服务器使用方面逐页跟踪有关用户的一些信息。使用会话还是使用cookie更好?使用这样或那样的方法有哪些起伏。

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

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

感谢

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

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

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

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

最新更新