cookie 身份认证

cookie的起源本身就是因为http是一种单向性的传输,服务器和浏览器之间没有联系用的东西,如服务器无法辨别正在浏览的是谁,他有vip吗?所以就想出在浏览器存一个简短的数据,每次浏览器会将这个数据发送给服务器,服务器通过这个判断这个人是谁。

但是现在来说,这种方式存在了一些问题:

  1. cookie容量很小,不能超过32kb,但实际上都不能完全达到32kb,因为cookie是放在http信息的header上的,而header最大也只有32kb,他除了cookie还要存放其他信息。
  2. 安全性,存放在浏览器的数据都不安全,客户端可以直接查看,修改,伪造

cookie一般是由服务器set-cookie方法给浏览器种一个cookie,然后每次浏览器则在每次请求时附带这个cookie给服务器。

session

由于cookie的一些问题,衍生出基于cookie的一种存放在服务器的数据方式:session。

他的原理是,浏览器发送请求到服务器,服务器判断是否有cookie,没有则种一个唯一的id内容的cookie给浏览器。服务器自身也会创建一个基于这个id的session存储。

然后浏览器每次都会发送这个id给服务器,服务器就对通过这个id来读取存放在服务器上的session数据。

但session相对来说,也有一些问题:

篡改,如果有人获得了别人的id,那他也可以在本地伪造一个,甚至修改自己的id内容为别人的,这样他就获取了被人的数据。

一般这种方式我们可以使用签名

猜测,比如你生成的id范围很小,那么就很容易被人猜测到。

我们可以使用uuid这种唯一性的生成id方式。增加一些多余的随机字符掩盖。

劫持,通过一些方式劫持用户信息,从而利用别人的用户信息登录

这种我们可以利用多因素校验,比如手机短信验证这些

其他身份认证方式

其原理都是存放一个身份id,怎么存,怎么读,怎么发送,都是session的变种。

比如 token

分类: Node 标签: cookienodekoasession

评论

暂无评论数据

暂无评论数据

目录