利用cookie實現自動登入

來源:酷知科普網 1.86W

本文介紹了什麼叫自動登入,如何利用cookie實現自動登入,以及可能存在的安全問題及相應的解決方案

操作方法

(01)什麼是自動登入?所謂自動登入就是當用戶在訪問某一站點的時候不用再輸入使用者名稱和密碼,直接登入。例子有很多:比如163郵箱的登陸頁,如果使用者登入的時候勾選了“十天內免登入”,則未來十天內使用者訪問163郵箱的時候就不用再輸入使用者名稱和密碼了,只要在瀏覽器裡面輸入,則自動跳轉到郵箱首頁。

利用cookie實現自動登入

(02)如何實現自動登入?由於HTTP請求時無狀態的,客戶端必須攜帶一些標識自己身份的資訊才有可能完成自動登入。只有cookie能完成這個任務。大致思路就是:1、使用者首次登入的時候,選擇“N天內免登入”;2、系統登入請求返回的時候,往客戶端寫cookie,cookie中包含使用者的登入名,有效期為N天。3、使用者下次再訪問該網站的時候,攜帶cookie;4、系統根據cookie中的使用者名稱,呼叫登入的方法,實現自動登入。

(03)安全性的考慮。由於cookie是可以被偽造的,所以上述的方案有以下安全隱患:1、修改使用者名稱,這樣就可以隨便用其他人的賬號登入了;2、修改cookie的有效期,這樣當別人拿到你的電腦的時候,即使已經過了cookie的有效期,仍然可以登陸。對應的解決思路為:1、在cookie中增加難以偽造的資訊,並且和使用者名稱一一對應。其實密碼具備這兩個特點,但是密碼未經加密就放置在cookie中,不安全。可以選擇使用使用者的sessionId來做,同時將sessionId加密。這時就需要在伺服器端建表記錄這種對應關係,假設該表為表A。2、在伺服器端記錄使用者cookie的失效時間。同樣在表A中記錄。修改之後的思路就變成了:1、使用者首次登入的時候,選擇“N天內免登入”;2、系統登入請求返回的時候,往客戶端寫cookie,cookie中包含使用者的登入名,加密後的sessionId,有效期為N天。3、使用者下次再訪問該網站的時候,攜帶cookie;4、系統根據cookie中的使用者名稱,加密後的sessionId,判斷cookie是否過期,校驗sessionId和使用者名稱是否匹配,呼叫登入的方法,實現自動登入。

熱門標籤