cookie,session,token学习

起因

工作中开始接触用户模块,但是本人web基础巨烂无比,因此google了一下,结合现有业务理解了下cookie,session,token的概念。

转载:http://www.v2ex.com/t/80003 binux的回答,是我看到最简单的解释

说那么多token,session的。叫token的多了去了,这些概念都是伪的。

对于HTTP协议来说,就是url,header,body

对于WEB页面来说,就是url,form/post body,cookie


好了,现在有的就是这么多东西,要怎么用呢?


首先是第一个问题,HTTP请求是无状态的,我怎么知道谁是谁?

解:让用户每次访问的时候告诉你它叫什么,怎么告诉?url,form/post body,cookie


然后是第二个问题,用户访问的时候说他自己是张三,他骗你怎么办?

解:在服务器端保存张三的信息,给他一个id,让他下次用id访问。id保存在url,form/post body,cookie中。这叫做session


现在是第三个问题,用户提交了一笔订单,你怎么保证他是在你的订单页面提交的?(referer可能是一个办法)

解:在你订单页面中放入一个加密的信息,只有真正打开了订单页才能知道,提交的时候将这个信息返回回来。这个东西,可以被叫做token

说穿了,就是因为HTTP的无状态问题,导致了产生如此多的概念,去维护客户端与服务端的状态同步。

用户登陆中cookie,session的使用

处理方式:

  1. 用户登陆
    • 当用户登陆时,服务端给用户一个已加密的cookie,里面记录了用户的身份信息(userId),sessionId等校验信息。同时在服务端,存储sessionId相对应的校验数据。
  2. 预览其他页面
    • 在站内的所有页面会继承一个模块,主要功能就是做用户登陆校验用的。已php的HMVC模式举例。所有的control层都会继承一个template的模板。在这个模板中,它会去检验用户的上传的cookie,已判断用户。
    • 判断的主要方式是解密用户上传的cookie,拿到sessionId,以及校验信息。通过sessionId至服务端拿到对应的校验信息。对比两部分的校验信息,判断用户的合法性,确定登陆用户。

一些常见问题:

  1. session存储方式
    • http://www.douban.com/note/269093631/
    • 上面那个链接已经很详细的介绍了现有session几种存储方式就不多介绍了
  2. 安全性保证
    • 当cookie被别人盗用时,账号安全完全无法保证。个人在这方面暂时没有看到好的文章去回应这个问题。

token

主要用于防止CSRF攻击。

http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html

这个blog中非常好的介绍了这部分内容


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值