介面鑑權之cookie session和token

2021-10-22 12:54:11 字數 1242 閱讀 8319

一、鑑權

二、引入cookie、session和token的原因

目前,大部分介面使用的都是http協議,而http協議是無狀態的,即本次請求和上一次請求是沒有任何關係的,無法共享資訊。

比如,像我們現在**下單需要先登入,你登入成功了之後再去下單,伺服器怎麼知道你是已登入狀態呢?

三、cookie和session

1、cookie產生原因:由於http是一種無狀態協議,伺服器沒有辦法單從網路連線上面知道訪問者的身份,為了解決這個問題,就誕生了cookie(cookie實際上是一小段的文字資訊)

2、cookie工作原理:客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用response向客戶端瀏覽器頒發乙個cookie;客戶端瀏覽器會把cookie儲存起來。當瀏覽器再請求該**時,瀏覽器把請求的**連同該cookie一同提交給伺服器。伺服器檢查該cookie,以此來辨認使用者狀態。

3、session工作原理:客戶端傳送登入資訊給伺服器,伺服器拿到登入資訊後生成sessionid,然後伺服器將sessionid傳送給客戶端,客戶端再次訪問時攜帶sessionid給伺服器,伺服器通過sessionid判斷對方是否是真實使用者。

4、cookie 和session的區別

1)存放位置:cookie資料存放客戶端(瀏覽器),session存放在伺服器

2)安全性:cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,如果主要考慮到安全應當使用session 

3)記憶體上:session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能,如果主要考慮到減輕伺服器效能方面,應當使用cookie 

4)大小限制:單個cookie在客戶端的限制是3k,所以將登陸資訊等重要資訊存放為session; 其他資訊如果需要保留,可以放在cookie中

5)共同點:cookie和session都是用來跟蹤瀏覽器使用者身份的會話方式

四、session和token(json web token (jwt))

簡單來說:使用token的原因是session id佔伺服器記憶體

解決方法:引入token,token可以直接把鎖和鑰匙都返回給瀏覽器,伺服器通過演算法去驗證鎖和鑰匙是不是同時有效的(防止有人惡意篡改)

給REST介面做鑑權認證 OAuth

本地儲存使用者名稱和密碼肯定是不合適的。參考了 如何設計好的restful api之安全性這裡寫鏈結內容 重新學習了oauth 發現原來oauth2.0還有四種模式可選 授權碼模式 authorization code 簡化模式 resource owner 密碼模式 password creden...

基於cookie的簡單鑑權與JWT鑑權

cookie鑑權在本文沒有做token的加密,通過token 使用者資訊json鍵值對的方式存入redis,這樣避免了session共享的問題,由於本文實現上省略了token加密,不能從cookie裡解密拿到使用者資訊,再加上cookie有被偽造的風險,所以安全性較低.有token加密的實現在本文j...

Asterisk鑑權演算法

客戶端傳送的鑑權資訊如下 digest username 103 realm asterisk nonce 51d89e6e uri sip 102 192.168.50.26 algorithm md5,response e9754418dd7dbea9ba740001f8d62598 aster...