理解Cookie和Session

理解Cookie

Cookie的作用

用户通过Http协议服务器,服务器会将一些Key/Value对返回给客户端浏览器,用户下次访问时数据又被完整的带回服务器。具体可以利用Cookie来做如:

  • 在客户端上保存用户数据,如用户名称、角色等等,起到简单的缓存作用;
  • 保存用户的登陆状态,用户成功登陆后,服务器生成特定的cookie返回给客户端,客户端下次访问该域名下的任何页面,将cookie的信息发送给服务器来认证用户;
Cookie的属性

常见属性如:

  • Expires 过期时间
  • Domain 对应的域名
  • Path 生成Cookie的路径
    可以通过name=value的方式来添加cookie属性,如添加用户名 username="zhansan"
弊端
  • 浏览器对Cookie的大小和数量有一定限制
  • 如果Cookie很多,客户端和服务端每次交互都得携带,增加了数据传输量
  • Cookie的信息可以在浏览器F12直接查看、修改、添加,有一定的安全风险,所有在使用时敏感数据一定要加密。

理解Session

服务器通过指定的属性名称来获取Session,默认属性名称为SESSIONID, 浏览器不支持Cookie时,通过路径参数传递,支持的话会将其放到Cookie属性中。服务端获取到SessionId(客户端第一次访问服务器时生成,每个客户端是唯一的)后生成HttpSession对象,这个对象会被服务端缓存直到过期回收。

Session的作用
  • 用Session将信息保存在服务端,避免了直接使用Cookie的信息暴露
  • 客户端只需要一个SessionId, 减少了传输数据量
限制
  • 分布一致性,使用Session会带来分布式问题,当有多台服务端时,需要保障Session一致,可以通过分布式Session框架来解决,确保session同步
  • CSRF攻击,可以在session中添加token来防范
posted @ 2018-08-26 20:55  懒人三四天  阅读(170)  评论(0编辑  收藏  举报