聊一聊cookie ,session

tips:接下去会在github写博客,简书不再更新和修改文章,欢迎大家逛逛我的新博客点击查看 ,我会尽量用更容易理解的方式写好每一篇博客,大家一起学习交流😄。

cookie

cookie是指Web浏览器存储的少址数据。
Cookie支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。

浏览器使用

cookie可以使用 js 在浏览器直接设置(用于记录不敏感信息,如用户名)

大小和数量会有限制

如果没有设置有效期,那就是会话储存,关了浏览器就没了。

尽管浏览器对cookie做了大小限制,不过最好还是尽可能在coki中少存储信息,以免避免影响性能。

前后端协同使用

cookie数据会自动在Web浏览器和Web服务器之间传输,在服务端通使用 HTTP 协议规定的 set-cookie 来让浏览器种下cookie,每次网络请求 Request headers 中都会带上cookie。所以如果 cookie 太多太大对传输效率会有影响。

因此服务端脚本就可以 读、 写存储在客户端的 cookie的值。

前后端协同使用流程

前后端cookie
Response headers
服务器响应头
Set-Cookie 字段的属性
Set-Cookie 字段的属性
Request headers
客户端请求头

使用场景

1.自动填写用户名。比如你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。

2.自动登录。Cookie是浏览器保存信息的一种方式,可以理解为一个文件,保存到客户端了啊,服务器可以通过响应浏览器的set-cookie的标头,得到Cookie的信息。你可以给这个文件设置一个期限,这个期限呢,不会因为浏览器的关闭而消失啊。

session

session 是一种基于cookie的让服务器能识别某个用户的「机制」,当然也可以特指服务器存储的 session数据。
Session不会支持跨域名访问,仅在他所在的域名内有效。

使用场景举例:购物

当一个用户打开淘宝登录后,刷新浏览器仍然展示登录状态。然后把购物车的东西下单支付了。

刷新的时候服务器如何分辨这次发起请求的用户是刚才登录过的用户呢?下单的时候又怎么知道是哪个用户下单的呢?

鉴于 HTTP 是无状态协议,之前已认证成功的用户状态无法通过协 议层面保存下来。即,无法实现状态管理,因此即使当该用户下一次 继续访问,也无法区分他与其他的用户。

于是我们会使用 Cookie 来 管理 Session,以弥补 HTTP 协议中不存在的状态管理功能。

cookie and session

1.用户在输入用户名密码提交给服务端,服务端验证通过后会创建一个session用于记录用户的相关信息的对象,这个session对象中放有生成的sessionid,也可以放一些非机密的userinfo。session对象可保存在服务器内存中(容易产生内存泄露),生产环境一般是保存在数据库中。

存在数据库的session

上图为使用koa-session-minimal 后存在数据库的session store

2.创建session后,会把关联的session_id 通过setCookie 添加到http响应头部中。
浏览器在加载页面时发现响应头部有 set-cookie字段,就把这个cookie 种到浏览器指定域名下

3.客户端接收到从服务器端发来的 Session ID 后,会将其作为 Cookie 保存在本地。之后你发起刷新或者下单的请求时,浏览器会自动发送被种下sessionid的cookie,后端接受后去存session的地方根据sessionid查找是否有此session(有既证明处于登录状态的真实用户,否则拒绝此次请求),如果有,还可以读取登录时放的userinfo,获取用户身份(user_id)。

koa-session-minimal相关源码

需要注意

1.如果 Session ID 被第三方盗走,对方就可以伪装成你的身份进 行恶意操作了。因此必须防止 Session ID 被盗,或被猜出。为了做到 这点,Session ID 应使用难以推测的字符串,且服务器端也需要进行 有效期的管理(即使不幸被盗,之后也因有效期已过而失效),保证其安全性。

2.另外,为减轻跨站脚本攻击(XSS)造成的损失,建议事先在 Cookie 内加上 httponly 属性。

3.如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。

cookie + session 方式的局限性

  • 是存储式的有状态验证,由于一定时间内它是保存在服务器上的,当访问增多时,会较大地占用服务器的性能。

  • 如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。

  • 有安全隐患:CSRF 。因为是基于cookie来进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。
    浅谈CSRF攻击方式

参考阅读&&鸣谢:

Cookie 与 Session 的区别
session 、cookie、token的区别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 经常忘记Cookie、Session和Token,那么今天就来记录一下它们,聊一聊。 1.Cookie、Sessi...
    浪浪许阅读 860评论 0 0
  • 背景在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cooki...
    时芥蓝阅读 2,353评论 1 17
  • 仿佛昨天 爷爷一板一眼地 讲着风趣的方言笑话 奶奶用棉籽油 给我炒一碗油盐饭 父亲心疼的给我一巴掌 过后语重心长的...
    一了0820阅读 581评论 5 9
  • 在简书上看到很多大神,比如彭小六,每天看一本书,这种学习速度超光速,而我一周看一本就不错了,有些看不懂的,还得看两...
    钱多多的时空站阅读 12,345评论 0 6
  • 七楼的风景,渐晚的夜,黛色的山,微凉的风。。。。。 有淡淡的落寞与惆怅。许多心事,欲说还休,万千思绪,却一如这块贫...
    smmrcn阅读 354评论 0 0