cookie 与 session

cookie 与 session

什么是cookie

  • Cookie是由服务器端生成,发送给浏览器,浏览器会将Cookie的key,value保存到某个目录下的文本文件内,下次请求同一网站时自动发送该Cookie给服务器
  • Cookie可以用来在某个WEB站点会话间持久的保持状态
示例:

由于hTTP是一种无状态的协议,服务器单从网络连接上无法记录和判断多次访问的用户状态

  • 就好比你开了个奶茶店重,有顾客买了个奶茶走了,下一次再来买,你怎么有这个信客理你的老顾客,好好招待他呢?
  • 解决办法很简单,就是办个会员卡卡上记录着她的余额等信息,这个会员卡好比是Cookie, 当顾客拿着这张会员卡下次再进店购买时,就可以证明他是个老顾客
  • 但是这里也暴露出来了一个问题,给顾客会员卡,顾客可以直接在他手里修改,或者被人盗用模仿,好比就像是Cookie放入客户端浏览器
总结:
  • 由于Cookie是放入了客户端浏览器,客户端可以有机会和权限修改Cokie, 或者被别人模仿伪造盗用,所以Cookie不安全。

什么是session

  • session是另一种记录客户状态的机制,基于cookie实现,不同的cookie保存在客户端浏览器中,而Session保存在服务器上。
  • 客户端浏览器访问服务器的时候,服务器客户端信息以某种形式记录在服务器上,这就是Session,客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
示例:
  • 在上面,我们开了奶茶店通过办卡的形式来给用户维持状态,问题很明显,存储在客户端的会员卡Cookie,安全性极低,很容易被客户端修改
  • 比如卡上直接写着你的余额,那客户端自己就可以修改,那奶茶店就会赔本儿了
  • 那现在解决这个问题很简单,那就是把核心数据不放在卡上,但是为了维持状态,卡依旧还是要给的,正如Session基 于Cookie一样,只不过这个卡上只有一串随机生成的唯一数字代表会员卡号,不存储其他有价值的数据,这就像是Session实现时还是要在Cookie里存放 一个sessionIDcookie里。
  • 这个会员卡号数字每个用户都不一样,通过这个卡号可以对应数据库里的一条数据,数据中有这个用户实际的金额等等有价值的数据,这样就保证了用户拿着卡,能访问钱,但是她改不了钱数,避免了Cookie被篡改的问题。
总结:

session相对于cookie较安全,但是Session也存在盗用的问题,别人可以复制这个卡号消费你的钱,可以复制在Cookie里存的SessionID伪装成你。

如何解决session,cookie盗用问题

由于SessionCookie都涉及到了在客户端存储信息,所以盗用是不可避免的,包括JWT也是在客户端Storage里存储,这也可能被盗用

所以目前的解决办法是尽量的把Cookie或者Session或者JWT有效期设置的短一些。

session与cookie的区别

1,session 在服务器端,cookie 在客户端(浏览器)
2,session 默认被存在在服务器的一个文件里(不是内存)
3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie 同 时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
4,session 可以放在 文件、数据库、或内存中都可以。
5,用户验证这种场合一般会用 session

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值