• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    网站登录持久化Cookie方案


    前提

    1. Cookie 是脆弱的。cookie 容易被窃取和受到垮站脚本的攻击,我们必须接受 cookie 是不安全的。
    2. 持久化登录 cookies 使得它们能通过网站的认证。这跟使用用户名和密码登录是相同的。
    3. 能从登录 cookie 里恢复密码的设计比不能恢复更危险。
    4. 把持久化 cookie 跟 ip 绑定起来大多数时候使它们并不持久。
    5. 用户可能希望同时把 cookie 持久保存在多个浏览器,多台机器上。

    方案

    首先这个 cookie 由用户名、分隔符和一个很大的随机数(128 位是比较理想的可以接受的长度)组成。服务器上有一张表保存有这个随机数和用户名的关系,用来验证 cookie 是否合法。如果 cookie 提供的随机数和用户名跟表上存的能对应上且未过期,那么就可以接受用户的登录。 表结构:

    复制代码 代码如下:

    id username token  expire_time
    1 foo 598433213…..8766688 2012-09-21 00:00:00
    2 bar 435435997…..4354564 2012-09-22 11:00:00

    某些时候,一个用户名可能对应多个随机数。另外,虽然不大可能,但即使有两个用户名对应同一个随机数也没什么关系。

    一个持久化 cookie 被认证后,这个用来登录的随机数就失效了,并且需要分配一个新的 cookie (生成一个新的随机数, 并更新数据库里的记录)给用户。然后用标准的 session 管理机制来处理 session 的生命周期,而那个新设置的 cookie 直到这次 session 结束都不会再被检查。

    服务器不需要特意防止一个以前用过的随机数被重新使用,这个几率非常小,即使发生了也没有人会知道可以利用它。

    当用户通过退出功能退出后,他们当前 cookie 里的随机数也就失效了。用户也应该可以选择清除所有被系统记录的持久化登录。

    数据库不定期的清理那些过期的记录(类似 session 的 gc 机制)。

    下面这些功能不能允许通过 cookie 登录的用户使用:

    复制代码 代码如下:

    * 修改密码
    * 修改用户邮箱(特别是如果系统的密码找回机制是基于邮箱的)
    * 任何用户的敏感信息
    * 任何需要支付的功能

    最后

    如果用户的登录 cookie 受到了攻击,攻击者就能以这个用户的身份来使用网站的功能。这是使用 cookie 无法避免的!尽管如此,攻击者应该不能:

    复制代码 代码如下:

    * 接触用户的敏感信息
    * 花用户的钱
    * 重置用户密码
    * 以用户的名义阻止用户接收网站的通知
    * 共享偷到的 cookie 给其他人

    您可能感兴趣的文章:
    • JavaWeb开发使用Cookie创建-获取-持久化、自动登录、购物记录、作用路径
    上一篇:十进制负数转换为二进制、八进制、十六进制的知识分享
    下一篇:google提供二维码生成器
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    网站登录持久化Cookie方案 网站,登录,持久化,Cookie,