測試面試題:cookie/session/token 分別表示什麼意思,有什麼區別?
測試面試必問: token,cookie,session 有什麼區別?
1.解釋
1>Cookie
cookie 是一個非常具體的東西,指的就是瀏覽器裡面能永久儲存的一種資料,僅僅是瀏覽器實現的一種資料儲存功能。cookie由伺服器生成,傳送給瀏覽器,瀏覽器把cookie以kv形式儲存到某個目錄下的文字檔案內,下一次請求同一網站時會把該cookie傳送給伺服器。由於cookie是存在客戶端上的,所以瀏覽器加入了一些限制確保cookie不會被惡意使用,同時不會佔據太多磁碟空間,所以每個域的cookie數量是有限的。
2>Session
session 從字面上講,就是會話。這個就類似於你和一個人交談,你怎麼知道當前和你交談的是張三而不是李四呢?對方肯定有某種特徵,表明他就是張三。session 也是類似的道理,伺服器要知道當前發請求給自己的是誰。為了做這種區分,伺服器就要給每個客戶端分配不同的“身份標識”,然後客戶端每次向伺服器發請求的時候,都帶上這個“身份標識”,伺服器就知道這個請求來自於誰了。至於客戶端怎麼儲存這個“身份標識”,可以有很多種方式,對於瀏覽器客戶端,大家都預設採用 cookie 的方式。
伺服器使用session把使用者的資訊臨時儲存在了伺服器上,使用者離開網站後session會被銷燬。這種使用者資訊儲存方式相對cookie來說更安全,可是session有一個缺陷:如果web伺服器做了負載均衡,那麼下一個操作請求到了另一臺伺服器的時候session會丟失。
3>Token
Token的引入:Token是在客戶端頻繁向服務端請求資料,服務端頻繁的去資料庫查詢使用者名稱和密碼並進行對比,判斷使用者名稱和密碼正確與否,並作出相應提示,在這樣的背景下,Token便應運而生。
Token的定義:Token是服務端生成的一串字串,以作客戶端進行請求的一個令牌,當第一次登入後,伺服器生成一個Token便將此Token返回給客戶端,以後客戶端只需帶上這個Token前來請求資料即可,無需再次帶上使用者名稱和密碼。最簡單的token組成:uid(使用者唯一的身份標識)、time(當前時間的時間戳)、sign(簽名,由token的前幾位+鹽以雜湊演算法壓縮成一定長的十六進位制字串,可以防止惡意第三方拼接token請求伺服器)。
使用Token的目的:Token的目的是為了減輕伺服器的壓力,減少頻繁的查詢資料庫,使伺服器更加健壯。
2.cookie與session的區別
1、cookie資料存放在客戶端上,session資料放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能
考慮到減輕伺服器效能方面,應當使用COOKIE。
4、單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie。
5、將登陸資訊等重要資訊存放為SESSION,其他資訊如果需要保留,可以放在COOKIE中
3.session與token的卻別
1、SSESION:我發給你一張身份證,但只是一張寫著身份證號碼的紙片。你每次來辦事,我去後臺查一下你的 id 是不是有效。
2、TOKEN :我發給你一張加密的身份證,以後你只要出示這張卡片,我就知道你一定是自己人。
相關文章
- session 和 cookie 有什麼區別?SessionCookie
- cookie和session 有什麼區別?CookieSession
- cookie是什麼?和session有什麼區別?CookieSession
- Session是什麼?它與Cookie有什麼區別?SessionCookie
- cookie和session有什麼區別?Python學習!CookieSessionPython
- HTTP協議Cookie和Session有什麼區別HTTP協議CookieSession
- Redis分散式Session和普通的cookie session有什麼區別?Redis分散式SessionCookie
- cookie和session有什麼區別?Python學習分享CookieSessionPython
- 安卓測試跟ios 測試有什麼區別?安卓iOS
- Token和cookie有什麼區別?網路安全工程都學什麼Cookie
- 面試題: Webpack 的 plugin 和 loader 有什麼區別面試題WebPlugin
- 【Java面試】IO和NIO有什麼區別?Java面試
- 效能測試、負載測試、壓力測試有什麼區別?負載
- 遊戲測試和軟體測試有什麼區別?遊戲
- 面試官:BIO、NIO、AIO是什麼,他們有什麼區別?面試AI
- MySQL、NoSQL分別是什麼?有什麼區別?MySql
- 什麼是滲透測試和安全測試,有何區別?
- APP測試和傳統軟體測試有什麼區別APP
- 面試官:react和vue有什麼區別嗎?面試ReactVue
- 面試題總結:Queue 中 poll()和 remove()有什麼區別?面試題REM
- session與token有什麼區別?網路安全基礎學習Session
- 什麼是滲透測試?與安全測試的區別是什麼?
- Token ,Cookie、Session 三者區別CookieSession
- java面試題之Thread的run()和start()方法有什麼區別Java面試題thread
- 面試題:VueRouter中的 hash 模式和 history 模式有什麼區別面試題Vue模式
- 滲透測試與漏洞掃描有什麼區別?
- CRM和CRM系統是什麼意思,有什麼區別?
- 共享儲存是什麼意思?與DRBD有什麼區別?
- 【網路安全】軟體測試和滲透測試有什麼區別?
- 面試突擊:MVCC 和間隙鎖有什麼區別?面試MVC
- 軟體測評中心▏效能測試、壓力測試、負載測試有什麼區別?負載
- 多執行緒面試題之sleep()和wait()方法有什麼區別?執行緒面試題AI
- web安全滲透測試是什麼意思?有什麼作用?Web
- Python中異常是什麼意思?與錯誤有什麼區別?Python
- 雲桌面是什麼意思?與堡壘機有什麼區別?
- 容器雲是什麼意思?與堡壘機有什麼區別?
- 軟體驗收測試之α測試和β測試分別是什麼?
- Telnet是什麼意思?與SSH有啥區別?