都用来跟踪客户端跟服务器的会话
条件 | session | cookie | webStorage(包含sessionStorage,localStorage) |
---|---|---|---|
大小 | 5M(不限制大小) | 4k | 一般为5M |
有效期 | 默认失效时间30分钟 | 窗口存活时间 | localStorage永不失效,除非主动删除,sessionStorage只在当下页面生效,关闭页面或者浏览器后被清除 |
安全性 | 安全性大于cookic | 不安全(cookie截获、cookie欺骗) | |
储存方式 | 类似HashTable的结构类型 | 字符串(文本的方式) | |
应用场景 | 1.判断用户是否登录过,以便下次登录能够自动登录(或者记住密码),如果我们删除cookie,每次登录都要填写相关信息, 2.保存上次的时间,浏览记录,次数 |
session用于保存每个用户的专用信息,变量的值保存在服务器端,通过sessionID来区分不同的用户, 1.网上商城的购物车 2.保存用户信息 3.讲某些数据保存在session中,供同一用户跨页面使用 |
localStorage用于长期登录,(判断用户是否已经登录过),适合保存一些长期使用的信息 sessionStorage用于保存一些敏感账号的一次性登录 |
一、为什么说session比cookie安全?
(1)sessionID储存在cookie中,要攻破session首先要攻破cookie
(2)sessionID是要有人登录或者session_start才会有,所以攻破cookie不一定有sessionID
(3)启动session_start(),前一次的sessionID失效,session过期后,sessionID失效
(4)sessionID加密
二、综上所述短时间攻破session不容易
浅谈session和cookie的缺点?
session | cookie | |
---|---|---|
缺点 | (1)保存的东西越多,就越占内存,对人数访问较多的服务器造成很大的压力 (2)依赖cookie,如果用户关闭cookie则要使用URL重写,这样不安全 (3)创建Session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以,过度使用session变量将会导致代码不可读而且不好维护 |
(1)大小受到 (2)用户可以操作,功能受限 (3)安全性较低,有些东西不能保存在客户端 (4)每次访问都需要给服务器发送,浪费宽带 |
三、session机制
当服务器收到要创建session先判断是否有sessionID,如果有则返回相应的对象,如果没有会新建一个session对象,并把sessionID在这次响应中返回给客户端,通常使用cookie来储存sessionID
四、参考阅读
CSDN:https://blog.csdn.net/xiaozhi_2016/article/details/52416093