用户原来选择了记住登录密码的情况:
是在 session 中存一个 key ,每次登陆和 cookie 校对一下?
还是,在数据表中存一个 key 来和 cookie 校对?
一般大家用什么方式简单还安全?
(说明:没有做长连接,不会一修改密码,就踢异地账号下线。只有等异地账号重新请求时,才能再拒绝cookie访问)
1
linauror 2016-12-10 15:17:04 +08:00
把数据库中的密码串(加密后的)或密码串的一部分存到 cookie ( cookie 要加密呀),每次验证登录权限时跟数据库中做对比
|
2
yinmin 2016-12-10 15:31:28 +08:00 6
用户注册时,在用户表里保存一个随机产生的 KEY ,当用户修改密码时,更新这个 KEY 。
用户登录时选择“记住登录密码”,下发三个 cookie : UserID 、过期时间、(UserID+过期时间+KEY)的数字签名。 用户再次登录请求时,先判断过期时间是否有效,然后通过 UserID 加载 KEY ,比对数字签名。 注意点: (1) 不要通过设定 Cookie 过期时间的方式,限制密码保存天数,用户可以很容易篡改 Cookie 过期时间的,应该下发过期时间,并且把过期时间加到数字签名内容中。 (2) 数字签名,最简单的方式是使用 HMAC_SHA1 算法,如果金融类网站可以使用更加安全的 RSA 签名。 |
3
dong3580 2016-12-10 15:42:17 +08:00 via Android
cookies 信息生成与密码有关就行了,
|
4
yinmin 2016-12-10 15:42:52 +08:00 2
为提高安全性:
(1) cookie 的 HttpOnly 属性要设置为 True ,防止脚本注入后,通过 javascript 窃取 cookie 。 (2) 如果安全要求高,网站可以启用 https ,然后配置 cookie 的 Secure 属性为 True , cookie 仅在 https 协议传输,如果 http 协议不会传输,可以防止网络窃听 Cookie ,冒用登录。 |
5
rogwan OP |
6
adv007 2016-12-10 21:02:14 +08:00 via iPhone
修改密码的用户置标志位,让其重新登陆
|
7
wvidc 2016-12-11 15:53:55 +08:00
cookie 组合加密后 和数据库中加密过的 key 对比
|
8
orvice 2016-12-11 16:31:24 +08:00
session id 入库,同时也放 redis
改密码等操作,从数据库找出 session id 同时从数据库和 redi 删掉。 |
9
lslqtz 2016-12-12 12:22:41 +08:00
我是直接把密码 aes 加密存在 cookie 里,每次登录对比一下。
反正密钥只有我知道。。 |