长寿命会话的风险

信息安全 网页浏览器 会话管理
2021-08-14 05:08:35

大多数“大”网站似乎都有大量的会话。从 cookie 来看,Stack Exchange 似乎有一个为期一周的滚动会话,GitHub 有 45 天,Gmail 似乎有一个永无止境的会话。

会话时间超过几个小时的安全隐患是什么?显然,建议的会话到期时间仅为 15 分钟,但这显然对用户体验非常不利。是否有一个小型 Web 应用可以使用的良好、愉快的会话到期媒介?主要网站如何设法摆脱如此长的会话?

3个回答

的确,这个问题很有趣。无论哪种方式,它都归结为风险评估以及代替每个系统的控制。粗略地说,我们可以想象长寿命会话的两个不良后果:

  1. 有人可以使用您登录的帐户打开浏览器。控制

    • 如果您怀疑您的个人设备被盗,请通过帐户设置关闭其他设备的所有会话。
    • 锁定您的个人设备。除了会话时间为 15 分钟外,7 周会话和无限会话没有太大区别:如果您不锁定计算机,有人可以使用您的计算机,并且会话通常会无限更新,直到您使用设备为止。因此,如果您的计算机被盗,您应该锁定您的设备并关闭来自另一台设备的所有会话。
  2. 有人可以窃取您的会话 ID 并在另一台设备上打开它。控制

    • 通过推送通知、SMS、电子邮件的用户通知。

关于代替上述系统的控件,让我们看一下每种情况:

  1. Stack Exchange有 1 周的滚动会话。控制:您可以使用 Google 或自定义电子邮件登录,可以删除会话,可以注销。
  2. GitHub有 45 天。控制:有双因素身份验证 (2FA)、会话控制、备份电子邮件、SSH 密钥、注销。
  3. Gmail有无休止的会话。控制:可疑登录检测、警报、2FA、备份电子邮件,一切...... 在此处输入图像描述

请记住,7 天和 45 天会话策略之间的区别有点微妙:当会话仍处于活动状态时,如果您忘记锁定设备,则有人可以打开您的浏览器。因此,对于未锁定的设备似乎没什么可做的,但 GMail 对任何可疑活动都有相当大的控制权。无论如何,安全工程师从他们的内部安全风险评估中选择到期时间,这可能因情况而异,可能与我们的看法不同,总有一部分主观性。

我的观点是,许多服务需要在安全性、可用性以及它们的商业模式之间找到平衡。越来越多的公司希望尽可能多地收集有关其用户的数据,因此他们希望您始终保持登录状态。如果您在注销时滚动它们的页面,这些服务通常会请求/唠叨您登录或注册。社交媒体功能也依赖于分享快速且几乎是强迫性的东西,只有当你已经登录到你的社交媒体网站时才能轻松完成,基本上一直都是。安全风险如何?由于这些公司实施了所有其他安全控制措施,它们可能被认为是微不足道的,而且他们可能认为不值得为了获得更多安全性而损害他们的商业模式。

让我们看看风险,以及为什么他们可以决定将它们排除在等式之外。

  • 你的兄弟使用你的电脑,而你忘记登出。如果您的其他人可以不受限制地访问您的计算机,那么您已经有更大的问题需要处理。无论如何,使会话在几个小时而不是几天后过期不会对您的安全产生重大影响。
  • 您从网吧登录,却忘记注销。同样,每当您使用别人的机器时,如果您不小心,就会遇到更大的问题。在任何情况下,如果网站允许您“在所有其他设备上注销”,那么您可以在发现问题后立即停止攻击者的会话。此外,2FA 会有所帮助,甚至只是设置恢复选项(电子邮件或电话)。大多数社交媒体网站都有这些选项,有些甚至恳求/唠叨你使用它们。
  • 有人偷了你的饼干。怎么样,为了什么?重视安全的网站使用仅限 http 的 cookie、HTTPS、HSTS,对您的 IP、您的位置、您的设备、您的行为进行安全检查,提供 2FA 和各种恢复选项等。
  • CSRF 和 XSS。某些漏洞允许您窃取 cookie 或利用现有会话。如果您已注销,这些类型的攻击可能不起作用。但是严肃的网站可能已经实施了 CORS、内容安全策略、不允许浏览器在 iframe 中加载它们、提供错误赏金、拥有内部安全团队、开发和/或使用人工智能来监控他们的业务等。会减少 cookie过期时间到几小时甚至几分钟有影响,在这种情况下呢?

总而言之,对于那些“大”公司来说,减少会话时间不会对其安全性产生明显影响。让会话过早过期实际上会损害他们的业务,因为他们的用户期望并被期望始终保持连接。当我使用完每个网站后,我仍然会退出它,因为它始终是一个好习惯:我们现在并不是每个网站都可以期望遵循最佳安全实践或在安全方面投入足够的资源,如谷歌/Facebook/等。

TL;DR Cookie 可以明确设置生命周期,或者在浏览会话结束时过期。Expires属性并不一定意味着用户在整个时间内都被视为“登录”。

从浏览饼干

我认为 cookie 和围绕它们实现的应用程序逻辑之间存在误解。如果您只看 cookie:某些站点甚至在用户进行身份验证之前就使用 cookie——以便跟踪匿名用户。cookie 的使用可用于广泛的跟踪目的,包括跟踪经过身份验证的用户

会话 cookie是一个特定的 cookie,会随着用户浏览器会话过期。也就是说,当用户关闭他们的浏览器时,会话 cookie 就会过期。

没有什么可以阻止服务器(应用程序)决定要求 cookie 的持有者(重新)进行身份验证。