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 · 4105 次点击
    这是一个创建于 2910 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    是在 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
    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   ·   实用小工具   ·   5491 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:31 · PVG 11:31 · LAX 19:31 · JFK 22:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.