前端設置cookie 如何用cookie實現(xiàn)自動登錄?
如何用cookie實現(xiàn)自動登錄?謝謝。“保持登錄狀態(tài)”表示服務器需要一些數(shù)據(jù)來標識發(fā)起當前請求的用戶。例如,登錄時,后端生成會話ID并將其設置為cookie。所有后續(xù)的請求瀏覽器都會帶來cookie,
如何用cookie實現(xiàn)自動登錄?
謝謝。
“保持登錄狀態(tài)”表示服務器需要一些數(shù)據(jù)來標識發(fā)起當前請求的用戶。例如,登錄時,后端生成會話ID并將其設置為cookie。所有后續(xù)的請求瀏覽器都會帶來cookie,然后服務器從cookie中獲取會話ID并查詢用戶信息。
因此,保持登錄的關鍵不是cookie,而是通過cookie保存和傳輸?shù)臅扞D。它的本質是能夠獲取用戶信息的數(shù)據(jù)。除了cookie之外,HTTP請求頭通常用于傳輸,例如標準授權,或者自定義的,例如x-auth-sessionid。但是,這個請求頭不會像cookie一樣由瀏覽器自動攜帶,需要手動處理。
例如,登錄時,服務器返回JWT格式的訪問令牌,前端將其保存到localstorage。對于后續(xù)請求,將構造一個類似于
authorization:bearer<access token>
的請求頭。服務器從授權中獲取令牌,解碼并查詢相應的用戶。最終結果與cookie相同。
假設我拿到了別的用戶的淘寶網站的cookie,我放到自己的http請求里,我就可以冒充這個用戶嗎?
理論上,如果你得到一個cookie,你就可以模擬一個用戶。根據(jù)以下具體分析:
此“身份密碼”由服務器生成并放置在客戶端瀏覽器的cookie中。服務器將有一個與之對應的會話,會話ID也存儲在cookie中。
如上所述,服務器的會話ID存儲在客戶端的cookie中,以便其他用戶在cookie中獲得會話ID后,可以模擬原始用戶啟動請求。
這似乎不合理
!但是,這是cookies和會話的機制。我們說過當cookie被禁用后,session可能無法正常工作,但是我們可以通過get將sessionid傳遞給服務器,因此如果sessionid以明文形式傳輸,則存在安全風險。
由于cookie存儲在客戶機中并且不安全,因此當我們將用戶數(shù)據(jù)存儲在cookie中時,我們將對其進行加密。例如,它將驗證用戶的IP、終端身份等,即使其他用戶偽造Cookie,也無法驗證。