gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

Node學(xué)習(xí)之聊聊Cookie-Session登錄驗(yàn)證的工作原理

Node學(xué)習(xí)之聊聊Cookie-Session登錄驗(yàn)證的工作原理

node.js極速入門(mén)課程:進(jìn)入學(xué)習(xí)

目前絕大多數(shù)的系統(tǒng)都少不了登錄驗(yàn)證的功能,這主要是為了保存用戶(hù)的狀態(tài),以此來(lái)限制用戶(hù)的各種行為,從而方便有效的控制用戶(hù)的權(quán)限。比如一個(gè)用戶(hù)登陸微博,發(fā)布、關(guān)注、評(píng)論的操作都應(yīng)是在登錄后的用戶(hù)狀態(tài)下進(jìn)行的。

實(shí)現(xiàn)登錄驗(yàn)證的功能主要有Cookie&Session、JWT兩種方式,這一節(jié)我們將先對(duì) Cookie&Session的工作原理 做詳細(xì)的介紹,在之后的文章中會(huì)陸續(xù)對(duì)JWT,以及如何使用Cookie&SessionJWT來(lái)完善前幾節(jié)我們搭建的簡(jiǎn)易用戶(hù)管理系統(tǒng)進(jìn)行講解?!鞠嚓P(guān)教程推薦:nodejs視頻教程】

1️⃣ Cookie&Session

我們知道,HTTP 是無(wú)狀態(tài)的。也就是說(shuō),HTTP 請(qǐng)求方和響應(yīng)方間無(wú)法維護(hù)狀態(tài),都是一次性的,它不知道前后的請(qǐng)求都發(fā)生了什么。但有的場(chǎng)景下,我們需要維護(hù)狀態(tài)。最典型的,一個(gè)用戶(hù)登陸微博,發(fā)布、關(guān)注、評(píng)論,都應(yīng)是在登錄后的用戶(hù)狀態(tài)下的。

這個(gè)時(shí)候就可以引入CookieSession來(lái)保存用戶(hù)的登錄狀態(tài)。

本篇文章主要介紹使用Cookie-Session來(lái)做登錄驗(yàn)證的工作原理,關(guān)于CookieSession的詳細(xì)介紹可查閱這位大佬的文章:Cookie和Session詳解

為什么不單獨(dú)使用Cookie?

Cookie是存放在瀏覽器中的,可以在瀏覽器中打開(kāi)控制臺(tái),選擇應(yīng)用,找到存儲(chǔ)中的Cookie進(jìn)行查看:

Node學(xué)習(xí)之聊聊Cookie-Session登錄驗(yàn)證的工作原理

當(dāng)客戶(hù)端向服務(wù)端發(fā)送網(wǎng)絡(luò)請(qǐng)求時(shí)瀏覽器會(huì)自動(dòng)Cookie添加到請(qǐng)求頭中,這樣服務(wù)端就能獲取這個(gè)Cookie,如下:

Node學(xué)習(xí)之聊聊Cookie-Session登錄驗(yàn)證的工作原理

知道了這個(gè)原理后,我們就可以想到,如果在用戶(hù)登錄系統(tǒng)時(shí):客戶(hù)端由用戶(hù)的部分登錄信息(比如username、id等)生成一個(gè)Cookie存放到瀏覽器中,那么在這之后的每一次網(wǎng)絡(luò)請(qǐng)求都會(huì)自動(dòng)攜帶上該Cookie

之后讓服務(wù)端根據(jù)請(qǐng)求中是否攜帶Cookie并且攜帶的Cookie中是否存在有效的username、id來(lái)判斷用戶(hù)是否已經(jīng)登錄過(guò)了,這樣一來(lái)用戶(hù)的登錄狀態(tài)不就被保存下來(lái)了嗎。

回到上面我們提到的微博的例子,按照這種過(guò)程來(lái)說(shuō),當(dāng)用戶(hù)登錄過(guò)后Cookie已經(jīng)被保存,這時(shí)當(dāng)用戶(hù)進(jìn)行發(fā)布、關(guān)注、評(píng)論等需要登錄才能使用的操作時(shí)我們就能提前判斷是否存在Cookie,如果存在并且Cookie中含有該用戶(hù)的id,那么我們就可以允許該用戶(hù)的這些操作(這些操作一般都是需要用戶(hù)的id的,這時(shí)就可以從Cookie中進(jìn)行獲取)。相反的,如果Cookie不存在或者Cookie無(wú)效,那么就禁止該用戶(hù)的這些操作。

說(shuō)到這,你可能會(huì)問(wèn):既然一個(gè)Cookie就能實(shí)現(xiàn)我們想要的效果,那為何還要使用Session呢?

這是因?yàn)?Cookie很容易被偽造! ,如果我們知道了Cookie中存放的信息是usernameid(就算不知道,也可以在登錄后的網(wǎng)絡(luò)請(qǐng)求的請(qǐng)求體中找到Cookie),那么我們完全可以在不登錄的情況下手動(dòng)向?yàn)g覽器存儲(chǔ)一個(gè)偽造的Cookie

Node學(xué)習(xí)之聊聊Cookie-Session登錄驗(yàn)證的工作原理

說(shuō)到這,你應(yīng)該就能明白為什么不能單獨(dú)使用Cookie了吧。

Session是如何與Cookie結(jié)合的?

Session其實(shí)是基于Cookie實(shí)現(xiàn)的,并且Session存儲(chǔ)在服務(wù)端的內(nèi)存或者數(shù)據(jù)庫(kù)中。

當(dāng)用戶(hù)登錄成功時(shí),使用Cookie&Session的登錄驗(yàn)證會(huì)進(jìn)行以下操作:

  • 由服務(wù)端生成SessionSessionId;

    Session一般是根據(jù)用戶(hù)登錄的信息,如用戶(hù)名、id等進(jìn)行生成。
    如果把Session比作是一把鎖,那么SessionId就相當(dāng)于是這把鎖的鑰匙。

  • 服務(wù)端將Session存儲(chǔ)到內(nèi)存或者數(shù)據(jù)庫(kù)中;

  • 服務(wù)端將SessionId存放到請(qǐng)求的響應(yīng)頭(response對(duì)象)中的Set-Cookie字段中發(fā)送給客戶(hù)端;

  • 客戶(hù)端收到Set-Cookie后會(huì)自動(dòng)將Set-Cookie的值(也就是SessionId)存放到Cookie中;

  • 之后的每次網(wǎng)絡(luò)請(qǐng)求都會(huì)自動(dòng)帶上Cookie,也就是帶上這個(gè)SessionId;

  • 服務(wù)端收到后續(xù)請(qǐng)求時(shí)獲取請(qǐng)求上的Cookie,也就是獲取到了SessionId,然后通過(guò)SessionId查詢(xún)并校驗(yàn)服務(wù)端存儲(chǔ)的Session,若校驗(yàn)成功說(shuō)明這個(gè)SessionId有效則通過(guò)此次請(qǐng)求,反之則阻止此次請(qǐng)求。

圖示:

Node學(xué)習(xí)之聊聊Cookie-Session登錄驗(yàn)證的工作原理

2️⃣ Cookie&Session的缺陷

存儲(chǔ)問(wèn)題

為了保存用戶(hù)的登錄狀態(tài),我們需要為每一位登錄的用戶(hù)生成并存儲(chǔ)Session,這勢(shì)必就會(huì)造成以下問(wèn)題:

  • 如果Session存放到內(nèi)存中,那么當(dāng)服務(wù)端重啟時(shí),這些內(nèi)存中的Session都將被清除,那么所有用戶(hù)的登錄狀態(tài)都將會(huì)過(guò)期,并且當(dāng)用戶(hù)量較大時(shí),過(guò)多的內(nèi)存占用也勢(shì)必會(huì)影響服務(wù)端的性能。
  • 如果Session存放到數(shù)據(jù)庫(kù)中,雖然能夠解決因服務(wù)端重啟造成用戶(hù)登錄狀態(tài)過(guò)期的問(wèn)題,但當(dāng)用戶(hù)量較大時(shí),對(duì)于這個(gè)數(shù)據(jù)庫(kù)的維護(hù)也會(huì)變得相對(duì)困難。
  • 如果前端頁(yè)面中調(diào)用的接口來(lái)自?xún)蓚€(gè)服務(wù)器(也就是兩套數(shù)據(jù)庫(kù)),為了實(shí)現(xiàn)Session在兩個(gè)服務(wù)器間共享通常會(huì)將Session存放到一個(gè)單獨(dú)的數(shù)據(jù)庫(kù)中,這樣就使得整個(gè)項(xiàng)目變得更為復(fù)雜也更加難以維護(hù)。
    Node學(xué)習(xí)之聊聊Cookie-Session登錄驗(yàn)證的工作原理

CSRF問(wèn)題

CSRF全稱(chēng)為 Cross-site request forgery 即 跨站請(qǐng)求偽造,使用Cookie進(jìn)行驗(yàn)證的網(wǎng)站都會(huì)面臨或大或小的CSRF威脅,我們以一個(gè)銀行網(wǎng)站的例子來(lái)介紹CSRF的攻擊原理:

假如一家銀行網(wǎng)站A的登錄驗(yàn)證采用的是Cookie&Session,并且該網(wǎng)站上用以運(yùn)行轉(zhuǎn)賬操作Api地址為:http://www.grillbankapi.com/?account=AccoutName&amount=1000

api參數(shù):account代表賬戶(hù)名,amount代表轉(zhuǎn)賬金額。

那么,一個(gè)惡意攻擊者可以在另一個(gè)網(wǎng)站B上放置如下代碼:

<img src="http://www.grillbankapi.com/?account=Ailjx&amount=1000">
登錄后復(fù)制

注意:img標(biāo)簽的src網(wǎng)站A轉(zhuǎn)賬操作的api地址,并且參數(shù)account為Ailjx,amount為1000,也就是說(shuō)這個(gè)api地址相當(dāng)于是賬戶(hù)名為 Ailjx 轉(zhuǎn)賬1000 時(shí)調(diào)用的api

如果有賬戶(hù)名為 Ailjx 的用戶(hù)剛訪(fǎng)問(wèn)過(guò)網(wǎng)站A不久,登錄信息尚未過(guò)期(網(wǎng)站ACookie存在且有效)。

那么當(dāng) Ailjx 訪(fǎng)問(wèn)了這個(gè)惡意網(wǎng)站B時(shí),上面的img標(biāo)簽將被加載,瀏覽器就會(huì)自動(dòng)請(qǐng)求img標(biāo)簽的src路由,也就是請(qǐng)求http://www.grillbankapi.com/?account=Ailjx&amount=1000 (我們將這個(gè)請(qǐng)求記為請(qǐng)求Q),并且因?yàn)?code>Cookie存放在瀏覽器中且瀏覽器發(fā)送請(qǐng)求時(shí)會(huì)自動(dòng)帶上Cookie,所以請(qǐng)求Q上就會(huì)自動(dòng)攜帶 Ailjx 在網(wǎng)站A上的Cookie憑證,結(jié)果就是這個(gè) 請(qǐng)求Q將會(huì)被通過(guò),那么 Ailjx 就會(huì)損失1000資金

這種惡意的網(wǎng)址可以有很多種形式,藏身于網(wǎng)頁(yè)中的許多地方。 此外,攻擊者也不需要控制放置惡意網(wǎng)址的網(wǎng)站。例如他可以將這種地址藏在論壇,博客等任何用戶(hù)生成內(nèi)容的網(wǎng)站中。這意味著如果服務(wù)端沒(méi)有合適的防御措施的話(huà),用戶(hù)即使訪(fǎng)問(wèn)熟悉的可信網(wǎng)站也有受攻擊的危險(xiǎn)。

透過(guò)例子能夠看出,攻擊者并不能通過(guò)CSRF攻擊來(lái)直接獲取用戶(hù)的賬戶(hù)控制權(quán),也不能直接竊取用戶(hù)的任何信息。他們能做到的,是欺騙用戶(hù)瀏覽器,讓其以用戶(hù)的名義運(yùn)行操作。

這些就是使用Cookie&Session來(lái)做登錄驗(yàn)證的問(wèn)題所在,那么我們?nèi)绾谓鉀Q這些問(wèn)題呢?這就需要引入JWT的概念,使用token來(lái)做登錄驗(yàn)證,這些我們將在之后的文章中進(jìn)行講解。

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
国产二区视频在线| 可以在线看的av网站| 97国产精东麻豆人妻电影 | 精品亚洲视频在线| 国产麻花豆剧传媒精品mv在线| 四虎成人在线播放| 五月婷婷之婷婷| 日韩精品视频一区二区在线观看| 4444在线观看| 久久综合在线观看| 亚洲一区二区在线视频观看| 日日摸天天爽天天爽视频| 日本一区午夜艳熟免费| 天堂а√在线中文在线| 自拍偷拍一区二区三区四区| 无码少妇一区二区三区芒果| 亚洲不卡中文字幕无码| 每日在线观看av| www.99热这里只有精品| 免费人成自慰网站| 日韩精品在线视频免费观看| 国产91视频一区| 欧美精品在欧美一区二区| 18视频在线观看娇喘| 日韩不卡一二区| 亚洲五码在线观看视频| 992tv快乐视频| 中文精品无码中文字幕无码专区| 欧美在线观看视频免费| 波多野结衣综合网| 欧美在线观看www| 黄色av免费在线播放| www.日本一区| 三级一区二区三区| 青青草原网站在线观看| 国产精品视频一二三四区| 无码人妻aⅴ一区二区三区日本| 超碰97在线看| 91猫先生在线| 亚洲免费看av| 日本丰满少妇黄大片在线观看| 亚洲天堂av免费在线观看| 久久久无码中文字幕久...| 我的公把我弄高潮了视频| jizzjizzxxxx| 国产精欧美一区二区三区白种人| 男女h黄动漫啪啪无遮挡软件| 99久久久精品视频| 99精品视频播放| 久久6免费视频| 国产高清av在线播放| 国产视频在线视频| 亚洲AV无码成人精品一区| www.av毛片| a在线观看免费视频| 成人短视频在线看| 欧美性大战久久久久xxx| 中文字幕永久有效| av网站手机在线观看| 久久综合久久色| 日本美女爱爱视频| 日本www高清视频| 18视频在线观看娇喘| 欧在线一二三四区| 99久久99久久精品| 色悠悠久久综合网| 99久久国产综合精品五月天喷水| 午夜dv内射一区二区| 日本国产中文字幕| 久久婷五月综合| 日本免费不卡一区二区| 中文字幕12页| 十八禁视频网站在线观看| 精品一区二区成人免费视频| 久久久久国产精品熟女影院| 日韩人妻一区二区三区蜜桃视频| 亚洲男人天堂色| 欧日韩免费视频| 好吊色这里只有精品| 亚洲最大成人在线观看| 成人毛片视频网站| 大片在线观看网站免费收看| 狠狠操狠狠干视频| 手机在线免费观看毛片| 免费看一级大黄情大片| 欧美少妇一区二区三区| 视频免费1区二区三区| 欧美极品欧美精品欧美图片| 精品视频在线观看一区| 亚洲精品中文字幕乱码无线| 久久午夜夜伦鲁鲁一区二区| 欧美 丝袜 自拍 制服 另类| 喜爱夜蒲2在线| 秋霞在线一区二区| 中文字幕第三区| 超碰在线资源站| 婷婷激情5月天| 一级黄色录像在线观看| 网站一区二区三区| 一区二区在线播放视频| 无码人妻丰满熟妇区毛片18| 国产 欧美 日本| 国产树林野战在线播放| 日本xxx免费| 日韩第一页在线观看| aaaaaaaa毛片| 性做爰过程免费播放| 精品国产一区二区三区在线| 国产卡一卡二在线| 四虎精品欧美一区二区免费| 欧美日韩一级在线| 黄色网在线视频| 波多野结衣av一区二区全免费观看| 国产高清免费在线| caoporm在线视频| 精品一区二区成人免费视频| 亚洲一级片免费观看| 亚洲黄色网址在线观看| 欧美性受xxxx黑人猛交88| 精品一区二区成人免费视频| 免费成人深夜夜行网站视频| 最近中文字幕免费mv| 男女啪啪的视频| 亚洲色欲久久久综合网东京热| 91网站在线观看免费| 性欧美在线视频| 色综合五月婷婷| 国产精品成人久久电影| 成人综合视频在线| 在线观看免费污视频| 久久久久久久久久久久久久久国产| 一级黄色大片儿| 精品人妻人人做人人爽| www.五月天色| 日本少妇高潮喷水视频| 国产第一页视频| 日本人69视频| 欧美黄网在线观看| 一二三四中文字幕| 成人av在线播放观看| 日韩精品一区二区三区不卡 | 男人天堂av片| 免费黄色一级网站| 99视频精品全部免费看| www.国产在线视频| 激情黄色小视频| www.黄色网址.com| 免费日韩中文字幕| 亚洲无在线观看| 久久久久久久久久久综合| 日韩一级免费在线观看| 三年中文高清在线观看第6集| 九九九九九国产| 我的公把我弄高潮了视频| 日本不卡一区二区在线观看| 中文字幕综合在线观看| 欧美 日韩 国产一区| 成人短视频在线看| 亚洲国产精品成人天堂| 成人3d动漫一区二区三区| 毛片在线视频观看| 91视频免费版污| 精品一区二区三区毛片| 天堂av在线网站| 熟女少妇在线视频播放| 中文字幕一区二区三区四| 国产精品专区在线| 日本黄色a视频| www.日本xxxx| 老太脱裤让老头玩ⅹxxxx| 搡的我好爽在线观看免费视频| 成年人深夜视频| 欧洲在线免费视频| 少妇一级淫免费放| 日本a在线免费观看| 91香蕉视频导航| 国产经典久久久| 北条麻妃亚洲一区| 男人操女人免费| 国产av第一区| 在线观看日本www| 国产又黄又猛又粗又爽的视频| 欧美在线一区视频| 久久久99精品视频| 91香蕉视频网址| 91性高潮久久久久久久| 在线视频观看91| 三级视频中文字幕| 黄色片久久久久| 三级4级全黄60分钟| 日本阿v视频在线观看| 久操手机在线视频| 日本久久久网站| aaa免费在线观看| 三级在线免费观看| 天天干天天操天天干天天操| 亚洲 自拍 另类小说综合图区| 日本丰满少妇xxxx| 亚洲欧洲日本精品| 91小视频在线播放|