簡述
說到cookie,我想前端開發都有聽說過吧,cookie的本質就是用來儲存資料的,但不能存太多資料。 cookie大多數是用來辨別使用者身份的,但不止這一種用途,這就要看具體專案了。 今天我們要說的就是怎麼通過cookie,能讓伺服器知道你就是某使用者。 大家都知道http是無狀態的,每次請求都是獨立的,是沒辦法直接判斷某個請求是否是同一個使用者發起, 這時候cookie就起作用的,當使用者第一次登陸這個網站的時候可以在響應頭設定一個cookie, 下次使用者在發起http請求就會自動帶上這個cookie,伺服器就可以通過這個cookie來找到這個使用者的資訊。 下面我們來看一下常用的幾種驗證使用者身份的方法
1、使用userId 作為登入使用者憑證
在登入成功的時候伺服器在cookie存入一個userId,下次這個使用者再發http請求的時候 把這個userId帶上就可以知道這個使用者是誰了。但是這種方法非常不安全, 如果單純的用一個userId作為憑證,容易被黑客盜用,因為只有一個userId作為憑證,在任何電腦只要把cookid中的userId改成別人的userId就可以直接模擬使用者了
2、userId + 簽名(sign) 作為登入使用者憑證
通過上面知道userId 可以用作使用者的登入憑證 單純的通過userId 判斷使用者這是非常不安全的。 所以在登入成功的時候伺服器在cookie存入一個userId和一個簽名值。 userId + 簽名(sign是通過userId算出的加密串,是不可逆的),這樣身份就不容易盜用, 當使用者向伺服器發請求的時候,會把userId和簽名一起傳送給後臺, 只有後臺驗證userId和簽名是匹配的就可以判斷就是當前使用者,而不是別人
3、使用sessionId 作為登入使用者憑證
userId + 簽名(sign) 作為登入使用者憑證,還是會把使用者資訊曝露出來, 還有一種方法,在使用者登入的時候伺服器在cookie中存一個sessionId(通過userId算出的加密串),並把這個使用者的資訊和這個sessionId關聯, 使用者每次登入的時候帶上這個sessionId就可以了, 後臺通過這個sessionId就可以查到關聯的使用者資訊