我希望我的网站上有一个复选框,用户可以单击它,这样他们每次访问我的网站时都不必登录。 我知道我需要在他们的计算机上存储cookie才能实现此目的,但是该cookie中应包含什么?

另外,是否有一些常见的错误需要提防,以防止此Cookie出现安全漏洞,而在仍然提供“记住我”功能的情况下可以避免该错误?


#1楼

存储他们的UserId和RememberMeToken。 当他们使用“记住我”身份登录时,将生成一个新的“ RememberMeToken”(使其他所有标记为“记住我”的计算机无效)。

当他们返回时,请通过“记住我”令牌进行查找,并确保UserId匹配。


#2楼

我将存储一个用户ID和一个令牌。 当用户返回该站点时,将这两部分信息与诸如数据库条目之类的持久性内容进行比较。

至于安全性,请不要在其中放任何东西,以免有人修改Cookie以获得额外的好处。 例如,不要存储其用户组或密码。 不能修改任何会破坏您安全性的内容都不应存储在cookie中。


#3楼

改进的持久登录Cookie最佳做法

您可以使用此处描述为最佳实践的策略(2006)或此处描述的更新策略 (2015):

  1. 当用户在选中“记住我”的情况下成功登录时,除了标准会话管理cookie外,还会发出一个登录 cookie。
  2. 登录cookie包含系列标识符和令牌 。 系列和令牌是来自适当大空间的不可猜测的随机数 。 两者都存储在数据库表中, 令牌被散列 (sha256可以)。
  3. 当非登录用户访问站点并显示登录cookie时,将在数据库中查找系列标识符。
    1. 如果存在系列标识符 ,并且令牌的哈希与该系列标识符的哈希匹配,则认为用户已通过身份验证 。 生成一个新令牌 ,该令牌的新哈希存储在旧记录上,并向用户发布一个新的登录cookie(可以重新使用系列标识符 )。
    2. 如果存在该系列但令牌不匹配,则认为是盗窃 。 用户收到措辞强烈的警告,并且删除了用户记住的所有会话。
    3. 如果用户名和系列不存在,则登录cookie被忽略

这种方法提供了深度防御。 如果有人设法泄漏数据库表,它就不会给攻击者敞开大门来冒充用户。


#4楼

我自己调查持久性会话,我发现这根本不值得承担安全风险。 如果绝对必要,请使用它,但是您应该考虑仅对这种会话进行弱认证,并对可能对攻击者有价值的任何事情强制进行新的登录。

原因当然是包含持久会话的cookie很容易被盗。

窃取Cookie的4种方法( 根据Jens Roland在@splattne页面上的@splattne基于他的回答):

  1. 通过不安全的线路拦截(数据包嗅探/会话劫持)
  2. 通过直接访问用户的浏览器(通过恶意软件或对该框的物理访问)
  3. 通过从服务器数据库读取它(可能是SQL Injection,但可以是任何东西)
  4. 通过XSS黑客(或类似的客户端漏洞利用)

对网站实施“记住我”的最佳方法是什么? [关闭]相关推荐

  1. 系统检测到您正在使用网页抓取工具访问_从网站抓取数据的3种最佳方法

    halo,大家好,我是特仑苏,今天呢给大家分享一些Python从网站抓取数据的一些方法,希望可以给大家带来一些帮助! 原作者:Octoparse团队 原出处:作品文(从网站抓取数据的3种最佳方法)/网 ...

  2. java 流量单位转换_将内容转换为持续流量的五种最佳方法

    java 流量单位转换 Websites that have focused on content marketing have done really well for themselves. We ...

  3. web前端开发最佳实践_学习前端Web开发的最佳方法

    web前端开发最佳实践 为什么要进行网站开发? (Why web development?) Web development is a field that is not going anywhere ...

  4. 编写react组件_s! 这就是为什么ReasonReact是编写React的最佳方法的原因

    编写react组件 Are you using React to build user interfaces? Well, I am too. And now, you'll learn why yo ...

  5. 学习一个新领域的知识的最佳方法和最快时间各是什么?

    Liu Cao ,「学习方法」是个伪命题 玉某人.冷峻.淡之 等人赞同 有个TED演讲简直是为这个问题量身订做的. The first 20 hours-How to learn Anything. ...

  6. 软件工程师转正申请_这是申请软件工程师工作的4种最佳方法-以及如何使用它们。...

    软件工程师转正申请 by YK Sugi 由YK Sugi 这是适用于软件工程师工作的最佳方法,以及确切的使用方法. (Here are the best methods for applying t ...

  7. 学习Java的最佳方法

    Java是某些人可能会说很难学习的语言之一,而其他人则认为它与其他语言具有相同的学习曲线. 两种观察都是正确的. 但是,由于Java具有平台无关性,因此在语言方面具有相当大的优势. Java是一种低级 ...

  8. 电子商务网站设计清单:万无一失的方法

    受欢迎的品牌充分意识到以下事实:使用有吸引力的网站是发展和运营成功的电子商务业务的最佳实践之一. 除此之外,您还需要注意组织网站的信息,内容和功能,以改善用户体验. 提供良好的客户体验是任何电子商务网 ...

  9. 《防患未然:实施情报先导的信息安全方法与实践》——3.3 攻击剖析

    本节书摘来自华章计算机<防患未然:实施情报先导的信息安全方法与实践>一书中的第3章,第3.3节,作者:[美] 艾伦利斯卡(Allan Liska) 更多章节内容可以访问云栖社区" ...

最新文章

  1. C#多态性-抽象类对象引用子类实例
  2. 从神经元到CNN、RNN、GAN…神经网络看本文绝对够了
  3. 微信小程序image组件开发程序以及相关图片问题参考资料汇总
  4. 什么是循环神经网络——学习笔记
  5. IT接口——Micro USB带来的市场影响力
  6. 四个方面快速排查工业级光纤收发器死机原因
  7. java 入参 是 枚举_java 枚举 参数传递
  8. stm32F1使用SD卡实现IAP
  9. db2 命令选项解释
  10. 第 0 章 阳哥MySQL高级
  11. 3D目标检测论文汇总
  12. 交换机tagged与untagged的关系深入探讨
  13. kindle dxg 作为电脑扩展显示器
  14. 目标高盛,卡方科技用智能金融科技撬动国内量化投资
  15. CS 3:威胁情报解决方案峰会——数据是威胁情报的基础
  16. java 取上界_java-泛型及上界下界详解
  17. Linux iptables 防火墙相关资料
  18. Eclipse简介、安装及常用快捷键
  19. could not resolve dependency: npm err! peer react@“^16.8.0 || ^17.0.0“ from @material-ui/core@4.12.4
  20. Http? Https?

热门文章

  1. Animator Controller 继承关系
  2. 十个利用矩阵解决的经典题目
  3. Download Microsoft Visual Studio 2010 Ultimate Trial - ISO from Official Microsoft Download Center
  4. Apache Tomcat 再爆严重安全漏洞
  5. SPOJ QTree【树链剖分】
  6. 巧用margin/padidng的百分比值占位,避免闪烁
  7. uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
  8. BZOJ4832: [Lydsy2017年4月月赛]抵制克苏恩
  9. 设计模式学习01策略模式记录
  10. 设计模式(七): 通过转接头来观察适配器模式(Adapter Pattern)