1.http請(qǐng)求頭有什么:
session在cookie里面
2.上圖可以看出登錄成功有x-uni-crsf-token和bspsession兩個(gè)字段卿操?
crsf:攻擊者盜用了你的身份,以你的名義向第三方網(wǎng)站發(fā)送惡意請(qǐng)求。 CRSF能做的事情包括利用你的身份發(fā)郵件、發(fā)短信、進(jìn)行交易轉(zhuǎn)賬等栅隐,甚至盜取你的賬號(hào)。
http://www.reibang.com/p/67408d73c66d
上面鏈接講述了什么是跨站請(qǐng)求偽造和如何應(yīng)對(duì)?
1.httponly只讀约啊,通過腳本無法獲取cookie信息
2.服務(wù)器端生成隨機(jī)數(shù)進(jìn)行校驗(yàn)且隨機(jī)數(shù)不放在cookie中
Session的過期時(shí)間存在cookie的Max-age字段,Token的過期時(shí)間存在服務(wù)器 佣赖。
https://blog.csdn.net/yunnysunny/article/details/26935637
session的作用如下:
服務(wù)器拿到sessionid查詢根據(jù)這個(gè)PHPSESSID查詢服務(wù)器上有沒有對(duì)應(yīng)的session內(nèi)容恰矩,如果有則將其對(duì)應(yīng)的值取出來進(jìn)行反序列序列化(也就是將其轉(zhuǎn)成編程語言中的一個(gè)數(shù)據(jù)結(jié)果,比如在php中會(huì)得到一個(gè)$_SESSION數(shù)組憎蛤,在j2ee中會(huì)得到類型為javax.servlet.http.HttpSession)外傅,方便在程序中進(jìn)行讀取,最終服務(wù)器認(rèn)定session中儲(chǔ)存的值存在俩檬,并且從反序列化得到的對(duì)象中讀取到了用戶ID屬性萎胰,然后就往cms數(shù)據(jù)庫的文章表中插入了一條數(shù)據(jù),最終返回http響應(yīng)棚辽,告訴瀏覽器操作成功了技竟。
======================
session的過期時(shí)間
默認(rèn)30分鐘(期間沒有活動(dòng)),cookie的過期時(shí)間關(guān)閉瀏覽器就會(huì)消失屈藐。
https://www.cnblogs.com/yaowen/p/4819018.html
如果不設(shè)置過期時(shí)間榔组,則表示這個(gè)cookie生命周期為瀏覽器會(huì)話期間,只要關(guān)閉瀏覽器窗口联逻,cookie就消失了搓扯。這種生命期為瀏覽會(huì)話期的cookie被稱為會(huì)話cookie。會(huì)話cookie一般不保存在硬盤上而是保存在內(nèi)存里包归。
如果設(shè)置了過期時(shí)間锨推,瀏覽器就會(huì)把cookie保存到硬盤上,關(guān)閉后再次打開瀏覽器公壤,這些cookie依然有效直到超過設(shè)定的過期時(shí)間换可。
===
再次注意關(guān)閉瀏覽器只會(huì)使存儲(chǔ)在客戶端瀏覽器內(nèi)存中的session cookie失效,不會(huì)使服務(wù)器端的session對(duì)象失效境钟。
cookie一般分兩種锦担。1.不設(shè)置過期時(shí)間,會(huì)存在內(nèi)存里慨削,瀏覽器關(guān)閉即失效洞渔。2.設(shè)置過期時(shí)間,會(huì)存在硬盤里缚态,一直到過期時(shí)間才失效磁椒。
用戶發(fā)出登錄請(qǐng)求,帶著用戶名和密碼到服務(wù)器經(jīng)行驗(yàn)證玫芦,服務(wù)器驗(yàn)證成功就在后臺(tái)生成一個(gè)token返回給客戶端
客戶端將token存儲(chǔ)到cookie中浆熔,服務(wù)端將token存儲(chǔ)到redis中,可以設(shè)置存儲(chǔ)token的有效期桥帆。
后續(xù)客戶端的每次請(qǐng)求資源都必須攜帶token医增,這里放在請(qǐng)求頭中慎皱,服務(wù)端接收到請(qǐng)求首先校驗(yàn)是否攜帶token,以及token是否和redis中的匹配叶骨,若不存在或不匹配直接攔截返回錯(cuò)誤信息(如未認(rèn)證)茫多。
token管理:生成、校驗(yàn)忽刽、解析天揖、刪除
token:這里使用userId_UUID的形式
有效期:使用Redis key有效期設(shè)置(每次操作完了都會(huì)更新延長(zhǎng)有效時(shí)間)
銷毀token:刪除Redis中key為userId的內(nèi)容
token存儲(chǔ):客戶端(Cookie)、服務(wù)端(Redis)
Cookie的存取操作(jquery.cookie插件)
Redis存裙虻邸(StringRedisTemplate)