cookie中igneous token、cookie和session的區(qū)別與使用場(chǎng)景?
token、cookie和session的區(qū)別與使用場(chǎng)景?謝謝你的邀請(qǐng)。它是由服務(wù)器生成的字符串,用作客戶(hù)端請(qǐng)求的令牌。在第一次登錄之后,服務(wù)器生成一個(gè)令牌并將其返回給客戶(hù)端。稍后,客戶(hù)端只需要攜帶令
token、cookie和session的區(qū)別與使用場(chǎng)景?
謝謝你的邀請(qǐng)。
它是由服務(wù)器生成的字符串,用作客戶(hù)端請(qǐng)求的令牌。在第一次登錄之后,服務(wù)器生成一個(gè)令牌并將其返回給客戶(hù)端。稍后,客戶(hù)端只需要攜帶令牌來(lái)請(qǐng)求數(shù)據(jù),而不需要再次攜帶用戶(hù)名和密碼。
會(huì)話(huà)表示服務(wù)器和瀏覽器之間的會(huì)話(huà),它是連續(xù)或間歇的。
cookie中存儲(chǔ)了一個(gè)會(huì)話(huà)ID,請(qǐng)求發(fā)出時(shí)將發(fā)送該ID;
由于請(qǐng)求而生成會(huì)話(huà)(請(qǐng)求對(duì)象);
會(huì)話(huà)是一個(gè)容器,可以在會(huì)話(huà)期間存儲(chǔ)任何對(duì)象;
會(huì)話(huà)始終在服務(wù)器上創(chuàng)建和使用,瀏覽器從不獲取會(huì)話(huà)對(duì)象session是一種HTTP存儲(chǔ)機(jī)制,它是為武裝HTTP而設(shè)計(jì)的一種持久化機(jī)制。
,包括cookie技術(shù)。Cookie是存儲(chǔ)在計(jì)算機(jī)瀏覽器目錄中的文本文件。當(dāng)瀏覽器運(yùn)行時(shí),它存儲(chǔ)在RAM(會(huì)話(huà)cookies)中。一旦用戶(hù)退出網(wǎng)站或服務(wù)器,cookie就可以存儲(chǔ)在用戶(hù)的本地硬盤(pán)上。
后端可以讓token直接存到瀏覽器的cookie里嗎?
首先,什么是餅干?
3)Cookie的使用由瀏覽器根據(jù)一定的原則在后臺(tái)自動(dòng)發(fā)送到服務(wù)器。瀏覽器檢查所有存儲(chǔ)的cookies。如果cookie的聲明范圍大于或等于要請(qǐng)求的資源的位置,則cookie將附加到要請(qǐng)求的資源的HTTP請(qǐng)求頭并發(fā)送到服務(wù)器。這意味著麥當(dāng)勞的會(huì)員卡只能在麥當(dāng)勞的商店里出示。如果分店還自行發(fā)放會(huì)員卡,進(jìn)入店內(nèi)時(shí),不僅要出示麥當(dāng)勞的會(huì)員卡,還要出示店內(nèi)的會(huì)員卡。
了解cookie的機(jī)制后,我們可以在后臺(tái)代碼中引入httpclient類(lèi)庫(kù)來(lái)操作cookie對(duì)象。
如果客戶(hù)端支持Cookie,則當(dāng)web服務(wù)器返回響應(yīng)時(shí),它會(huì)在響應(yīng)頭uName=XXXX“頭屬性中添加一個(gè)“set Cookie:Cookie”,將Cookie發(fā)送到響應(yīng)中的客戶(hù)端。
客戶(hù)端將cookie存儲(chǔ)在本地文件中。下次訪(fǎng)問(wèn)web服務(wù)器時(shí),它將把cookie信息放入HTTP請(qǐng)求的“cookie”頭屬性中。這樣,jsessionid將與HTTP請(qǐng)求一起返回到web服務(wù)器。
假設(shè)我拿到了別的用戶(hù)的淘寶網(wǎng)站的cookie,我放到自己的http請(qǐng)求里,我就可以冒充這個(gè)用戶(hù)嗎?
理論上,如果你得到一個(gè)cookie,你就可以模擬一個(gè)用戶(hù)。根據(jù)以下具體分析:
此“身份密碼”由服務(wù)器生成并放置在客戶(hù)端瀏覽器的cookie中。服務(wù)器將有一個(gè)與之對(duì)應(yīng)的會(huì)話(huà),會(huì)話(huà)ID也存儲(chǔ)在cookie中。
如上所述,服務(wù)器的會(huì)話(huà)ID存儲(chǔ)在客戶(hù)端的cookie中,以便其他用戶(hù)在cookie中獲得會(huì)話(huà)ID后,可以模擬原始用戶(hù)啟動(dòng)請(qǐng)求。
這似乎不合理
!但是,這是cookies和會(huì)話(huà)的機(jī)制。我們說(shuō)過(guò)當(dāng)cookie被禁用后,session可能無(wú)法正常工作,但是我們可以通過(guò)get將sessionid傳遞給服務(wù)器,因此如果sessionid以明文形式傳輸,則存在安全風(fēng)險(xiǎn)。
由于cookie存儲(chǔ)在客戶(hù)機(jī)中并且不安全,因此當(dāng)我們將用戶(hù)數(shù)據(jù)存儲(chǔ)在cookie中時(shí),我們將對(duì)其進(jìn)行加密。例如,它將驗(yàn)證用戶(hù)的IP、終端身份等,即使其他用戶(hù)偽造Cookie,也無(wú)法驗(yàn)證。
移動(dòng)端開(kāi)發(fā)為什么不采用session而是用token?
事實(shí)上,令牌和會(huì)話(huà)不是同一個(gè)域概念。令牌是字符串,而會(huì)話(huà)是會(huì)話(huà)。兩者并不沖突或相互替代。
這里我要說(shuō)的是令牌和會(huì)話(huà)ID之間的區(qū)別(通常在cookie中)。
令牌本身是由OAuth系列在大規(guī)模普及之前引入的。主要目的是支持sso,即單點(diǎn)登錄,這是OAuth系列的主要需求。當(dāng)然,一些基于cookie/會(huì)話(huà)的框架(比如jasigcas)可以支持sso,但是它們沒(méi)有OAuth那么簡(jiǎn)潔。OAuth使用token作為唯一的證書(shū),第三方服務(wù)器在驗(yàn)證token后可以建立自己的會(huì)話(huà)(廣義上說(shuō),在redis中可以同時(shí)使用傳統(tǒng)會(huì)話(huà)和token作為密鑰),并將用戶(hù)認(rèn)證完全委托給OAuth。因此,分工相對(duì)明確,成為眾多商家共享用戶(hù)資源建立自己生態(tài)系統(tǒng)的首選。
傳統(tǒng)的會(huì)話(huà)管理很難實(shí)現(xiàn)這些目標(biāo)。