• 为什么需要Cookie和Session?

    • WEB应用程序是使用HTTP协议传输数据的。
    • HTTP协议是无状态的协议,一旦数据提交完毕,客户端与服务端的连接就会关闭,再次交换数据需要建立新的连接。
    • 这就意味着服务器无法从连接上跟踪会话。
    • 要实现跟踪会话必须引入一种机制。
  • Cookie

    • Cookie是浏览器存储数据以此来追踪用户和识别用户的机制,从实现来说,cookie是存储在客户端上的一个数据片段。
    • Cookie运行原理
      • 客户端向服务端发起一个HTTP请求
      • 如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个cookie(通行证)。客户端会把cookie保存起来。
      • 当浏览器再请求该网站时,浏览器把请求的网址连同该cookie一起提交给服务器。
      • 服务器检查该cookie,以此来辨识用户状态。服务器还可以根据需要修改cookie的内容。
        image
    • Cookie安全性问题
      • 不安全的原因:因为它存储在浏览器端(用户本地),一些别有用心的人能够通过浏览器截获cookie。
      • 不安全的表现形式:
        • cookie欺骗:cookie加密,一些别有用心的人并不需要直到cookie的具体含义,只需将这个cookie向服务器提交,使得身份验证通过。
        • cookie截获:cookie以纯文本的形式在浏览器和服务器之间传递,在web通信时极容易被非法用户截获和利用。非法截获cookie后,在cookie的有效时间内重新发送给服务器,就可以获得用户权限。
    • 如何解决cookie安全性问题
      • 设置cookie有效期不要太长
      • 加密cookie
      • session和cookie同时使用,相对的session更安全,可以将相对重要的信息存入session。
      • 使用https
  • Session

    • Session是服务器端使用的一种记录客户端状态的机制,使用上比cookie简单一些,相应的也增加了服务器的存储压力。
    • Session运行原理
      • 客户端向服务端发起一个HTTP请求
      • 服务端根据设置的session创建指令,在服务端创建一个编号为sessionid的文件。
      • 服务端将sessionid编号响应给客户端,客户将该编号存在cookie中。
      • 当下一次请求时,客户端将这个sessionid携带在请求中,发送给服务端,服务端根据这个sessionid来做一些业务判断。
        image
  • cookie和session的比较

    cookie session
    存储在客户端 存储在服务端
    不是很安全 相对更安全
    存储容量为4K 存储容量不限
    只能存储string对象 可以存储任意对象
    默认销毁时间是整个会话(浏览器关闭) 默认销毁时间是30分钟
    • 相同点:都是为了记录当前用户的信息
posted on 2020-02-12 22:41  xiaobaizzZ  阅读(176)  评论(0编辑  收藏  举报