Heim  >  Artikel  >  Backend-Entwicklung  >  php怎么保持登录状态?

php怎么保持登录状态?

PHPz
PHPzOriginal
2016-06-06 20:12:392685Durchsuche

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中文网!!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn