Heim >Backend-Entwicklung >PHP-Tutorial >请教如何提高登录验证的效能
最近做的一个系统
登录是用$_COOKIE做的
会自动生成一个识别符($identifier)和验证符($token),保存到
$_COOKIE["auth"] = $identifier . ":" . $token ;有做加密,在此先不提加密的事
暂时想到
成功登录后同时设定一个COOKIE
setcookie('next_check',"hahahaha",time()+900);
这样15分钟就会消失
在检查是否登录的function最外层,加上一个
if (!!empty($_COOKIE["next_check"])) {
}
这样有安全问题吗?
当然不是每页都查询啊,登陆成功后写个session,保存用户id,用户名等等资料数组
每次读取session就好
但这样引发一个问题,我在后台封账号,不能及时踢下去,因为他机器上的session仍然有效
这个需要共享内存来解决吧
我现在都是用cookie做登录,当然要用自己的加密key加密后存放
要在你的服务器设置一个解密的key,获取cookie后反解,这样你就不怕别人获取cookie来解密了
当然不是每页都查询啊,登陆成功后写个session,保存用户id,用户名等等资料数组
每次读取session就好
但这样引发一个问题,我在后台封账号,不能及时踢下去,因为他机器上的session仍然有效
这个需要共享内存来解决吧
我现在都是用cookie做登录,当然要用自己的加密key加密后存放
要在你的服务器设置一个解密的key,获取cookie后反解,这样你就不怕别人获取cookie来解密了
1、验证只发生在需要以用户数据修改系统数据数据的页面
2、增强的验证必须来自不同的数据源。将 识别符和验证符 用同一种方式传递,是没有意义的,自欺欺人的。
3、如有“踢人”的需求,那么就需要时刻检查了。可使用自定义的 session 处理程序来完成
直接获取cookie,用服务器的key解出来就可以了,不用验证,因为若是被修改,你用服务器的key是解不出来的
比如你就存放个uid和过期时间,要是能解出来,你就直接查询那个uid的信息,并存放到全局变量里面,解出来没有uid,说明就是被篡改了,要重新登录
先谢谢
1. 问题是怕流量大时有负载问题
2. 我写得这么麻烦不想用SESSION,因为要做自动登录, 应该只能用COOKIE吧?
考虑踢人的话,可以将用户登陆信息写入memcache 中key为用户id,可以带用户登陆状态和时间,设置key的过期时间,验证用户时,拿用户session和制定的memcache key中的数据比对,两者都存在是ok。当需要踢用户时直接清除key下得memcache缓存
谢谢各位宝贵的指教!