百度百科定义如下:
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。
简单来说,session其实与cookie用途基本类似,都是一段数据,用来保存用户的信息。只不过session是在服务器端保存,cookie在客户端保存。
整个session其实由两个部分构成:
1.session id:存储在客户端的cookie中,在访问服务端的时候传给服务器,服务器根据session id找到该用户对应的session文件。每一个session id都是唯一的,唯一对应一个用户和客户端上的一个session文件。通常,对应关系是客户端session id:a----服务端session文件名:sess_a
2.session内容:session内容中包括一些变量的键值对,用户的身份信息等等,每一个用户的所有session内容保存在一个session文件中,这些文件存储在服务器端
这与cookie不同,cookie的内容也在客户端,容易伪造,而session内容在服务器端,更加安全
在php中:
1.客户端发包时,会有一个PHPSESSID的cookie,这就是session id
2.根据session id,当会话自动开始(没有已有的session,会先生成session文件)或者手动开始(session_start())对应session文件的内容会被反序列化并且以键值对的形式填充到$_SESSION超级全局变量中
3.$_SESSION与session文件的内容高度同步,当$_SESSION被改变,session文件内容随之改变
如果session中某些值被控制,可能会造成反序列化漏洞,但是session安全性肯定是高于cookie的
文章评论