php维持登录,php怎么保持登录状态?
php怎么保持登錄狀態?下面本篇文章給大家介紹一下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中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的php维持登录,php怎么保持登录状态?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python progressbar 多
- 下一篇: php 检测密码,php如何检测账号密码