cookies、sessionStorage、localStorage知识强化

很全面的博文-友情链接

根据博文自己整理的,补充完善的知识

html4

  • 用来跟踪浏览器用户身份的会话方式
  • cookie保存在浏览器端
  • session保存在服务器端
会话方式 机制 存储位置 特征 备注
Cookie 会话Cookie 保存在内存 未设置过期时间 生命期随浏览器关闭而结束
  非会话Cookie 保存在硬盘 设置过期时间 不随浏览器关闭结束,直到过期时间结束

会话方式 客户端 请求 处理 重写URL
Session 允许Cookie 有SessionId 服务端返回对应Session对象
  无SessionId 服务器创建Session对象,并在本次请求返回SessinId,使用Cookie方式存储  
  禁用Cookie url有SessionId 服务端返回对应Session对象  
    url无SessionId 服务器创建Session对象,并在本次请求返回Sessinid 重写URL将SessionID拼接到访问地址 response.encodeURL(url)

会话方式 存储位置 存储内容 存储大小 安全性
Cookie 客户端 只能保存字符串 单个Cookie保存不能超过4kb 隐患: Cookie欺骗,Cookie截获
Session 服务器 类似HashTable的数据结构,支持任何类型的对象 没有限制 优于Cookie

Session安全

SessionId存储在Cookie中,若要攻破Session首先要攻破Cookie
SessionId要有人登录,或启动Session_Start才会有,所以攻破Cookie也不一定能得到SessionId
第二次启动Session_Start后,前一次的SessionId就会失效,Session过期后,SessionId也会失效
SessionId是加密的
攻击者必须在短时间内攻破加密的SessionId,这很难。

会话方式 应用场景 会话方式 应用场景
Cookie Session 用于保存每个用户的专用信息,变量的值保存在服务器端,通过SessionId来区分不同的客户
  判断用户是否登录过网站,以便下次登录时能够实现自动登录(或者记住密码)。如果我们删除Cookie,则每次登录必须从新填写登录的相关信息。   网上商城中的购物车
  保存上次登录的时间等信息   保存用户登录信息
  保存上次查看的页面   将某些数据存放入Session中,供同一个用户的不同页面使用
  浏览计数   防止用户非法登录

会话方式 缺点 会话方式 缺点
Cookie 大小收限制 Session 保存的东西越多,就越占用服务器内存,对于在线用户人数较多的网站,服务器的内存压力会比较大
  用户可以操作(禁用)Cookie,使功能受限   依赖于Cookie(SessionId保存在Cookie); 如果禁用Cookie,则要使用URL重写,不安全
  安全性较低   创建Session变量有很大的随意性,可随时调用,不需要开发者做精确的处理。所以多度使用Session变量将会导致代码不可读而且不好维护。
  有些状态不可能保存在客户端  
  每次访问都要传送Cookie给服务器,浪费带宽  
  Cookie数据有路径(path)的概念,可以限制Cookie只属于某个路径