首頁  >  文章  >  後端開發  >  php怎麼保持使用者登入狀態

php怎麼保持使用者登入狀態

王林
王林原創
2019-10-15 13:14:515155瀏覽

php怎麼保持使用者登入狀態

PHP保持使用者登入狀態的方法

#1、將使用者訊息,例如一個['uid'=>123, 'username '=>'testuser']的數組,在序列化後變成字串,使用可逆加密演算法加密該字串,寫到一個Key為userinfo的COOKIE裡。

2、由於可逆加密演算法容易被解密,一旦加密的規則被別人猜測到以後,就可以輕易篡改這個COOKIE的內容,然後自行根據加密規則加密後偽造。

所以,我們另外加入一個infodig的COOKIE,是將以上的userinfo的COOKIE內容,加入salt後使用不可逆加密演算法產生散列,至於salt咱們可以自己定,總之要對外保密,不可逆演算法例如md5,甚至多次加鹽多次md5。

3、以上兩個COOKIE,為增強安全性,防止使用者被XSS攻擊後拿到,可以設定http-only屬性。

服務端判斷存在以上兩個COOKIE後

1、驗證infodig與userinfo是否相符(將userinfo的內容使用產生infodig的方法計算後,與COOKIE傳上來的infodig匹配是否一致)

2、infodig驗證通過後,使用解密演算法解密userinfo串,得到用戶訊息,如果用戶資訊裡的uid存在用戶表中,則寫SESSION,透過SESSION保持本次會話

總結:

使用COOKIE記錄使用者資訊是可行的(當然不建議把使用者敏感的東西存在COOKIE,例如郵箱、手機、甚至密碼,只記錄對登入有用的部分,例如uid、username等標識,以及nickname可能會在某些地方提升使用者體驗),可以確定的是,這個COOKIE對使用者可見,我們要做的就是兩點:

1、盡量讓使用者看不懂,而只有我們服務端自己認識(可逆加密演算法)

2、即使使用者看懂了,他也不能夠輕易的偽造(不可逆的散列演算法)

推薦教學:PHP影片教學

以上是php怎麼保持使用者登入狀態的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn