token解決cookie的弊端
目錄- token解決cookie的弊端
- cookie的弊端
- token解決弊端一
- 什么是token和JWT
- JWT的構成
- token作業流程
- token解決弊端二
- CSRF攻擊
- token防止CSRF
cookie的弊端
- 弊端一:瀏覽器請求過服務器后,下一次訪問時服務器就會通過瀏覽器cookie中攜帶的sessionID去尋找對應session,但是如果服務器做了負載均衡,用戶下一次請求可能會被定向到其他服務器節點,那臺服務器上沒有用戶session資訊,就會導致驗證失敗,所以session默認機制下不適合做分布式部署,其實可以將session集中存盤在同一個地方,所有服務器都去這里去訪問,但增加了單點失敗的可能性,如果負責存盤session的機器出現問題,所有人都要重新登錄,
- 弊端二:cookie安全性較低,
token解決弊端一
什么是token和JWT
token:簡單說就是服務器給瀏覽器發了一枚令牌,以后帶著令牌過來就能隨便訪問,
JWT:全稱 JSON Web Tokens ,是一種規范化的 token,
JWT的構成
它是一個字串,由頭部、載荷與簽名三部分構成,兩兩之間用.分隔,
頭部(Header):一般存放令牌型別和簽名(加密)演算法型別,將其用Base64Url進行編碼,
載荷(Payload):包括簽發人、生效時間、編號等資訊,將其用Base64Url進行編碼,
簽名(Signature):將前兩部分編碼過的字串用指定的簽名演算法和服務器提供的密鑰進行加密得到簽名,
token作業流程
- 用戶通過用戶名及密碼進行登錄驗證,
- 服務器驗證成功后生成token將其回傳給瀏覽器,
- 瀏覽器可以將其存盤在cookie中(也可以存盤在其他地方),在以后訪問中將token添加到http請求的header中,
- 服務器通過token中前兩部分內容及服務器存盤的密鑰再次加密,然后與token中的簽名進行核對,相同說明已登錄,
這樣一來,服務器不用保存每個用戶的session,只需要保存一段密鑰,token由用戶自己保存,
token解決弊端二
CSRF攻擊
CSRF(Cross-site request forgery),即跨站請求偽造,
舉例:我去訪問A網站,服務器給了我cookie,我又去訪問B網站,有人在B網站中放入了一個來自A網站的鏈接,點擊后會執行一些非我本意的操作,我點擊后瀏覽器帶著我的cookie去請求,服務器誤以為就是我想來執行這些操作,于是就涼涼了,
token防止CSRF
瀏覽器請求時會默認攜帶cookie,但不會直接攜帶token,
還有人說cookie中不是也可能存有token嗎,那cookie被劫持和token被劫持有什么區別?CSRF的原理是冒用別人的cookie去欺騙服務器,但不能獲取到cookie中的資訊,所以即便cookie被劫持,但cookie本身不參與驗證,只是起到存盤作用,用于驗證的token必須添加到http的header中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/546525.html
標籤:其他
上一篇:Java動態代理
