您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么在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中保持用戶登錄狀態有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。