大多数“大”网站似乎都有大量的会话。从 cookie 来看,Stack Exchange 似乎有一个为期一周的滚动会话,GitHub 有 45 天,Gmail 似乎有一个永无止境的会话。
会话时间超过几个小时的安全隐患是什么?显然,建议的会话到期时间仅为 15 分钟,但这显然对用户体验非常不利。是否有一个小型 Web 应用可以使用的良好、愉快的会话到期媒介?主要网站如何设法摆脱如此长的会话?
大多数“大”网站似乎都有大量的会话。从 cookie 来看,Stack Exchange 似乎有一个为期一周的滚动会话,GitHub 有 45 天,Gmail 似乎有一个永无止境的会话。
会话时间超过几个小时的安全隐患是什么?显然,建议的会话到期时间仅为 15 分钟,但这显然对用户体验非常不利。是否有一个小型 Web 应用可以使用的良好、愉快的会话到期媒介?主要网站如何设法摆脱如此长的会话?
的确,这个问题很有趣。无论哪种方式,它都归结为风险评估以及代替每个系统的控制。粗略地说,我们可以想象长寿命会话的两个不良后果:
有人可以使用您登录的帐户打开浏览器。控制:
有人可以窃取您的会话 ID 并在另一台设备上打开它。控制:
关于代替上述系统的控件,让我们看一下每种情况:
请记住,7 天和 45 天会话策略之间的区别有点微妙:当会话仍处于活动状态时,如果您忘记锁定设备,则有人可以打开您的浏览器。因此,对于未锁定的设备似乎没什么可做的,但 GMail 对任何可疑活动都有相当大的控制权。无论如何,安全工程师从他们的内部安全风险评估中选择到期时间,这可能因情况而异,可能与我们的看法不同,总有一部分主观性。
我的观点是,许多服务需要在安全性、可用性以及它们的商业模式之间找到平衡。越来越多的公司希望尽可能多地收集有关其用户的数据,因此他们希望您始终保持登录状态。如果您在注销时滚动它们的页面,这些服务通常会请求/唠叨您登录或注册。社交媒体功能也依赖于分享快速且几乎是强迫性的东西,只有当你已经登录到你的社交媒体网站时才能轻松完成,基本上一直都是。安全风险如何?由于这些公司实施了所有其他安全控制措施,它们可能被认为是微不足道的,而且他们可能认为不值得为了获得更多安全性而损害他们的商业模式。
让我们看看风险,以及为什么他们可以决定将它们排除在等式之外。
总而言之,对于那些“大”公司来说,减少会话时间不会对其安全性产生明显影响。让会话过早过期实际上会损害他们的业务,因为他们的用户期望并被期望始终保持连接。当我使用完每个网站后,我仍然会退出它,因为它始终是一个好习惯:我们现在并不是每个网站都可以期望遵循最佳安全实践或在安全方面投入足够的资源,如谷歌/Facebook/等。
TL;DR Cookie 可以明确设置生命周期,或者在浏览会话结束时过期。该Expires
属性并不一定意味着用户在整个时间内都被视为“登录”。
从浏览饼干
我认为 cookie 和围绕它们实现的应用程序逻辑之间存在误解。如果您只看 cookie:某些站点甚至在用户进行身份验证之前就使用 cookie——以便跟踪匿名用户。cookie 的使用可用于广泛的跟踪目的,包括跟踪经过身份验证的用户。
会话 cookie是一个特定的 cookie,会随着用户浏览器会话过期。也就是说,当用户关闭他们的浏览器时,会话 cookie 就会过期。
没有什么可以阻止服务器(应用程序)决定要求 cookie 的持有者(重新)进行身份验证。