Cookie和Session的區(qū)別:
1键俱、cookie數(shù)據(jù)存放在客戶的瀏覽器上王凑,session數(shù)據(jù)放在服務(wù)器上。
2聋丝、cookie不是很安全索烹,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙,考慮到安全應(yīng)當(dāng)使用session。
3弱睦、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上百姓。當(dāng)訪問增多,會(huì)比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面况木,應(yīng)當(dāng)使用cookie垒拢。
4、單個(gè)cookie保存的數(shù)據(jù)不能超過4K火惊,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie求类。
5、所以個(gè)人建議:
將登陸信息等重要信息存放為session
其他信息如果需要保留屹耐,可以放在cookie中
Token 和 Session 的區(qū)別:
session和 token并不矛盾尸疆,作為身份認(rèn)證token安全性比session好,因?yàn)槊總€(gè)請(qǐng)求都有簽名還能防止監(jiān)聽以及重放攻擊惶岭,而session就必須靠鏈路層來保障通訊安全了寿弱。如上所說,如果你需要實(shí)現(xiàn)有狀態(tài)的會(huì)話按灶,仍然可以增加session來在服務(wù)器端保存一些狀態(tài)症革。
App通常用restful api跟server打交道。Rest是stateless的鸯旁,也就是app不需要像browser那樣用cookie來保存session,因此用session token來標(biāo)示自己就夠了噪矛,session/state由api server的邏輯處理量蕊。如果你的后端不是stateless的rest api,那么你可能需要在app里保存session.可以在app里嵌入webkit,用一個(gè)隱藏的browser來管理cookie session.
Session是一種HTTP存儲(chǔ)機(jī)制,目的是為無狀態(tài)的HTTP提供的持久機(jī)制摩疑。所謂Session認(rèn)證只是簡(jiǎn)單的把User信息存儲(chǔ)到Session里危融,因?yàn)镾ID的不可預(yù)測(cè)性,暫且認(rèn)為是安全的雷袋。這是一種認(rèn)證手段吉殃。
而Token,如果指的是OAuth Token或類似的機(jī)制的話楷怒,提供的是 認(rèn)證 和 授權(quán) 蛋勺,認(rèn)證是針對(duì)用戶,授權(quán)是針對(duì)App鸠删。其目的是讓 某App有權(quán)利訪問 某用戶 的信息抱完。這里的Token是唯一的。不可以轉(zhuǎn)移到其它App上刃泡,也不可以轉(zhuǎn)到其它 用戶 上巧娱。轉(zhuǎn)過來說Session。
Session只提供一種簡(jiǎn)單的認(rèn)證烘贴,即有此SID禁添,即認(rèn)為有此User的全部權(quán)利。是需要嚴(yán)格保密的桨踪,這個(gè)數(shù)據(jù)應(yīng)該只保存在站方老翘,不應(yīng)該共享給其它網(wǎng)站或者第三方App。所以簡(jiǎn)單來說锻离,如果你的用戶數(shù)據(jù)可能需要和第三方共享铺峭,或者允許第三方調(diào)用API接口,用Token汽纠。如果永遠(yuǎn)只是自己的網(wǎng)站卫键,自己的App,用什么就無所謂了虱朵。
token就是令牌永罚,比如你授權(quán)(登錄)一個(gè)程序時(shí),他就是個(gè)依據(jù)卧秘,判斷你是否已經(jīng)授權(quán)該軟件呢袱;cookie就是寫在客戶端的一個(gè)txt文件,里面包括你登錄信息之類的翅敌,這樣你下次在登錄某個(gè)網(wǎng)站羞福,就會(huì)自動(dòng)調(diào)用cookie自動(dòng)登錄用戶名;
session和cookie差不多蚯涮,只是session是寫在服務(wù)器端的文件治专,也需要在客戶端寫入cookie文件卖陵,但是文件里是你的瀏覽器編號(hào).Session的狀態(tài)是存儲(chǔ)在服務(wù)器端,客戶端只有session id张峰;而Token的狀態(tài)是存儲(chǔ)在客戶端泪蔫。