(6)nodejs学习---cookie和session

来源:互联网 发布:网络世界边锋游戏 编辑:程序博客网 时间:2024/05/21 19:36

在学习cookie和session之前要了解一个知识点:http
一切跟服务器之间的交互都是通过http协议完成的。但http有一个先天不足:http无状态。
http无状态导致了一个大麻烦是:
用户a请求,和用户b请求,服务器时服务识别是否来自同一个地址,或者说是否是两个不同的人请求。
这样每个用户打开一个登录页面或刷新页面都必须重新登录一遍。

http带来了登录的麻烦,所以cookie就应运而生了。
cookie的一些相关知识:
1)cookie可以在浏览器这端保存一些数据。
2)cookie信息的一个大特点就是,客户端向服务器发起请求,和服务器给服务端放回数据时,都会携带这cookie,无论这个cookie信息是否有用。不过这有点好处是,服务器端可以弄明白是谁发送过来的请求。
3)cookie是不安全的,原因:任何保存在客户端的信息都是不安全的。用户是可轻松看到cookie中的内容,并可以修改cookie中的内容。
所以说类似余额这种数据一定不可以放在cookie中。
4)cookie大小是有限制的,因为浏览器不会让你随便存东西,你不可以想存多少就存多少,cookie的上限是4k,也就五六十条数据。

session:由于在客户端存的数据很不安全,所以就出现了session。
session的作用也是保存数据,但是它是将数据保存在服务器端的,这样用户就不能随便更改了。
session的一些相关知识:
1)session的大小相对于服务器的大小来说是无限制的,即服务器只要有地方,就可以存储。

疑问:cookie存储数据有限,还不安全,为什么还不将它淘汰?
答:因为session是不能独立存在的,session是基于cookie实现的,没有cookie也就没有了session,所以cookie即使有再多的缺点,也是不可以淘汰的。

session的原理简图:
步骤1:浏览器首次去访问服务器,会携带一个cookie,这个cookie是个空值。
步骤2:服务器此时会在cookie中种一个信息,sessionid=xxx;
cookie:{sessionid:xxx};
步骤3:当浏览器再一次访问服务器时,这个cookie会在此被带到服务器上。
步骤4:这时服通过读取这个sessionid的相关文件来得到session的相关信息。
这里写图片描述

session也是存在隐患的:
cookie中会有session的ID,这样客户端就可以看到这个sessionid,当然也可以篡改。
隐患例子:当你登录一个网站时,cookie会存有了你的sessionid,如果这个sessionid被使用你电脑的人拿走,种到他自己的机器中,当这个人请求服务器的时候就是以你的身份进行请求的。
以上也就是session劫持,这是一个种攻击,但是无法完全避免,不过是可以缓解的。

原创粉丝点击