网站登录持久化Cookie方案

所属分类: 网络编程 / 相关技巧 阅读数: 898
收藏 0 赞 0 分享


前提

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 给其他人

更多精彩内容其他人还在看

StringBuider 在什么条件下、如何使用效率更高

都说 StringBuilder 在处理字符串拼接上效率要强于 String,但有时候我们的理解可能会存在一定的偏差。今天小编给大家带来一篇教程关于StringBuider 在什么条件下、如何使用效率更高?感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

2020年最火的6种编程语言推荐

当下计算机编程语言总数达到好几万种,但是最流行的编程语言有哪些呢,今天,小编就给大家盘点一下2020年很受欢迎的编程语言,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

遵守这些原则让你开发效率提高一倍(收藏)

这篇文章主要介绍了遵守这些原则让你开发效率提高一倍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

使用idea 去除 html 代码前的行号和空行的方法详解

这篇文章主要介绍了使用idea 去除 html 代码前的行号和空行,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

云开发 VSCode 插件 Cloudbase Toolkit 的正确打开方式及应用场景分析

Tencent CloudBase Toolkit 是云开发的 VS Code(Visual Studio Code)插件。这篇文章主要介绍了云开发 VSCode 插件 Cloudbase Toolkit 的正确打开方式,需要的朋友可以参考下
收藏 0 赞 0 分享

12个Visual Studio调试效率技巧(小结)

这篇文章主要介绍了12个Visual Studio调试效率技巧,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

fiddler抓包小技巧之自动保存抓包数据的实现方法分析【可根据需求过滤】

这篇文章主要介绍了fiddler抓包小技巧之自动保存抓包数据的实现方法,较为详细的分析了fiddler自动保存抓包数据及根据需求过滤相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

解决IDEA中编辑HTML格式文件不自动缩进问题

这篇文章主要介绍了解决IDEA中编辑HTML格式文件不自动缩进问题,本文内容简短,解决方法给大家提出了,需要的朋友可以参考下
收藏 0 赞 0 分享

vsCode中配置setings.json的技巧

本文给大家分享的是一个在vsCode中配置好的setings.json的样例,可以给大家一个参考,有需要的小伙伴可以来看下
收藏 0 赞 0 分享

全网最详细的vscode基础教程

vscode全称为visual studio code,是微软旗下一款非常优秀的跨平台代码编辑软件。vscode 中文版集成了大部分代码编辑的器的优点,集成GIT、代码调试、语法高亮,拥有强大丰富的插件系统
收藏 0 赞 0 分享
查看更多