用户修改密码之后,怎么禁止原来登录过的 cookie(还没过期)不能再访问? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
rogwan
V2EX    Python

用户修改密码之后,怎么禁止原来登录过的 cookie(还没过期)不能再访问?

  •  
  •   rogwan 2016-12-10 15:13:47 +08:00 4592 次点击
    这是一个创建于 3306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用户原来选择了记住登录密码的情况:

    是在 session 中存一个 key ,每次登陆和 cookie 校对一下?
    还是,在数据表中存一个 key 来和 cookie 校对?

    一般大家用什么方式简单还安全?
    (说明:没有做长连接,不会一修改密码,就踢异地账号下线。只有等异地账号重新请求时,才能再拒绝cookie访问)

    9 条回复    2016-12-12 12:22:41 +08:00
    linauror
        1
    linauror  
       2016-12-10 15:17:04 +08:00
    把数据库中的密码串(加密后的)或密码串的一部分存到 cookie ( cookie 要加密呀),每次验证登录权限时跟数据库中做对比
    yinmin
        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 签名。
    dong3580
        3
    a href="/member/dong3580" class="dark">dong3580  
       2016-12-10 15:42:17 +08:00 via Android
    cookies 信息生成与密码有关就行了,
    yinmin
        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 ,冒用登录。
    rogwan
        5
    rogwan  
    OP
       2016-12-10 19:30:37 +08:00
    @linauror @dong3580 直接截一段密码的 hash 值的方式简单易行

    @yinmin 月底就全改 https ,明年 1 月好多新浏览器,苹果都强制 https ,正好一并改了,感谢建议!
    adv007
        6
    adv007  
       2016-12-10 21:02:14 +08:00 via iPhone
    修改密码的用户置标志位,让其重新登陆
    wvidc
        7
    wvidc  
       2016-12-11 15:53:55 +08:00
    cookie 组合加密后 和数据库中加密过的 key 对比
    orvice
        8
    orvice  
       2016-12-11 16:31:24 +08:00
    session id 入库,同时也放 redis

    改密码等操作,从数据库找出 session id 同时从数据库和 redi 删掉。
    lslqtz
        9
    lslqtz  
       2016-12-12 12:22:41 +08:00
    我是直接把密码 aes 加密存在 cookie 里,每次登录对比一下。
    反正密钥只有我知道。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5357 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:43 PVG 16:43 LAX 00:43 JFK 03:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86