PHP判断用户登录状态,效率并且安全的方案是什么?

本人比较菜,目前使用的方案是1.在客户端COOKIES中保存用户ID和一个加密码(规则只有我知道)
2.如果程序检测到客户端保存的COOKIESID。就去跟数据库验证加密码,如果一致则返回对应用户的登录信息,否则返回FALSE感觉效率和安全性都不是很好1.用户访问每个页面都要去跟数据库验证一遍
2.加密码虽然规则很复杂,但是保存在客户端依然存在被破解的可能性
HUX布斯
浏览 266回答 2
2回答

SMILET

“用户访问每个页面都要去跟数据库验证一遍”这怎么会呢?1,浏览器URL访问页面资源,2,查看SESSION会话是否记录登陆状态,如“否”从3继续,如“是”则到53,获取浏览器客户端的COOKIE用户标识信息,如果存在用户信息则继续4,如“否”或者不符合既定原则则到64,判断用户标识是否可信,比如将加密的字串解密,取出字串中的id和密码与数据库中信息对比是否匹配,如果匹配则到5,如果不匹配则65,验证登陆状态通过6,验证登陆状态不通过如此看怎么会老是读数据库呢?分割线一般常规“记住登陆”方法,可以将ID和密码组合成字符串再salt加密后存到浏览器客户端。每次和服务器端验证时,再解密分割取得ID和密码与数据库比对。如此安全性还是可以的。比如这是存到客户端COOKIE$data=$id."\t".md5($password.$slat);//$slat可以是硬编或者随机存在用户列的值$identity=base64_encode(encrypt($data,$key));//encrypt为自实现的加密函数或方法,$key可以是硬编或者随机存在用户列的值setcookie("testuser",$identity,time()+3600);比如这是取if(isset($_COOKIE['testuser'])){$identity=$_COOKIE['testuser'];list($id,$password)=explode("\t",decrypt(base64_decode($identity),$key));//decrypt为自实现的解密函数或方法,$key可以是硬编或者随机存在用户列的值//todo与数据库列值比对//...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript