cookie,session,token区别

记录一下学xss和csrf而涉及的这方面内容:

参考:
https://www.cnblogs.com/xuxinstyle/p/9675541.html

https://www.cnblogs.com/moyand/p/9047978.html

https://www.jianshu.com/p/24825a2683e6

一.Cookie:

1.作用:用于维持http协议无连接状态,并且标识不同用户。

2.使用:在浏览网站时会,服务器会写入一个非常小的cookie文件在你的电脑,比如用户ID,密码,停留时间等。当下次浏览时先检测你的硬盘,若有cookie则直接读取,无需再输用户密码。(这就是不小心关闭一个网页再点开却不用再次输账号密码的原因)

3.分类:内存cookie和硬盘cookie。

4.大小:大多数浏然器支持最大为4096kb,大约4kb。并且只允许每个站点存储20各cookie,再多了就会替换旧的。甚至有的浏览器限制来自所有站点的cookie为300个。

5.格式:见《web安全深度剖析》p135

6.利用读写代码从而盗取利用cookie,然后利用burp替换为制定cookie,在“proxy”→“options”→“match and replace”(正则形式!)或者Chrome浏览器的f12的console修改(document.cookie)。

二、Session:

1.概念:另一种维持会话转态的是session,其是一种服务器端机制,存储在服务端,仅仅在客户端存储一个id。服务端使用类似散列表的结构保存。

2、注意:session是指用户在浏览某个网站时,从进入网站到浏览关闭所经过的这段时间,即“对话”,浏览器关闭,session自动注销。

3、区分普通用户和管理员,依靠SESSIONID来区分不同session。

4、可以存储在cookie中,相当于临时cookie,也可能在url中。

三、Token:

1、概念:Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。

2、作用:Token 完全由应用管理,所以它可以避开同源策略;Token 可以避免 CSRF 攻击(http://dwz.cn/7joLzx);Token 可以是无状态的,可以在多个服务间共享。

3、使用

(1)用设备号/设备mac地址作为Token(推荐)

客户端:客户端在登录的时候获取设备的设备号/mac地址,并将其作为参数传递到服务端。

服务端:服务端接收到该参数后,便用一个变量来接收同时将其作为Token保存在数据库,并将该Token设置到session中,客户端每次请求的时候都要统一拦截,并将客户端传递的token和服务器端session中的token进行对比,如果相同则放行,不同则拒绝。

分析:此刻客户端和服务器端就统一了一个唯一的标识Token,而且保证了每一个设备拥有了一个唯一的会话。该方法的缺点是客户端需要带设备号/mac地址作为参数传递,而且服务器端还需要保存;优点是客户端不需重新登录,只要登录一次以后一直可以使用,至于超时的问题是有服务器这边来处理,如何处理?若服务器的Token超时后,服务器只需将客户端传递的Token向数据库中查询,同时并赋值给变量Token,如此,Token的超时又重新计时。

(2)、用session值作为Token

客户端:客户端只需携带用户名和密码登陆即可。

客户端:客户端接收到用户名和密码后并判断,如果正确了就将本地获取sessionID作为Token返回给客户端,客户端以后只需带上请求数据即可。

分析:这种方式使用的好处是方便,不用存储数据,但是缺点就是当session过期后,客户端必须重新登录才能进行访问数据。

ps:参考几篇文章做的小总结,不对之处还望师傅们斧正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值