缩短Session会话有效期并不能增加安全性


登录到 Web 应用程序时,会话不会永远保持有效。通常,会话在登录后的固定时间后或用户闲置一段时间后过期。这些时间应该是多长?

在某些Web应用程序中,会话会被设置为过期:过一段时间就会注销,需要再次进行身份验证。
目前的安全建议是使用较短的会话超时,例如在 15 分钟未活动后。

然而,大多数移动应用程序和大型网络应用程序(如 Gmail 或 GitHub)并不遵守这一规定。你似乎可以永远登录而无需再次验证。这些不安全吗?谷歌和微软比 NIST 和 OWASP 更了解情况吗?

会话令牌非常安全。

安全威胁可以通过其他措施轻松修复,例如磁盘加密、锁定计算机或 HttpOnly cookie。
即便如此,如果有人破坏了你的会话,无论它持续五分钟还是永远,你都会完蛋。
通过短会话超时来阻止的攻击确实很少见。Facebook、谷歌、亚马逊和 GitHub 的会话永不过期。他们认为这是可以接受的风险。我认为他们是对的。
短的会话超时也会带来安全和用户体验成本。

安全威胁模式
这种威胁模式涉及攻击者未经授权访问用户的活动会话。这可能会通过各种方式发生,如窃取会话 cookie、利用会话固定漏洞或使用与受害者相同的设备。

但是,如果会话在 15 分钟不活动后过期,是否就能防止会话接管呢?

1、XSS
如果攻击者利用 XSS 或会话固定窃取了会话 cookie,攻击者就会立即获得有效会话的访问权限,并可以继续执行请求以保持会话的活力。绝对超时会限制攻击者的时间,但实际上这并不能真正阻止任何攻击者。顾名思义,他们窃取了一个有效的会话令牌,并能立即使用它。据推测,他们会立即让自己成为管理员,或者把你所有的比特币都汇到他们的账户上。由于这是一种有针对性的攻击,攻击者知道应用程序的会话超时,因此可以在会话超时前自动发动攻击。

2、登录令牌
如果攻击者在盗取你的电脑后,在日志中或硬盘上看到了旧的会话令牌,那么会话超时很可能阻止了会话接管。这是支持会话超时的理由,但不一定支持短会话超时。此外,最好通过保护日志或使用硬盘加密来防止这种情况。

3、共享计算机
也许你使用图书馆的共享计算机访问网络应用程序时忘记了注销。该计算机的下一个用户可能会重新打开网络应用程序并接管您的会话。

有这种情况吗?没有用户分隔的共享计算机是个问题吗?如果是,那么无论会话有效时间有多短,都不应该使用这些电脑访问包含敏感信息的网络应用程序。设备可能已经被入侵,或者浏览器可能还记得你的密码,或者敏感信息还在浏览器缓存中。

即使网吧仍然存在,有些应用程序也只能在公司内部通过公司设备使用。或者人们使用自己的移动设备访问应用程序。对于大多数网络应用程序而言,共享公用计算机的威胁并不现实。

4、攻击者可以访问您的设备
你去吃午饭时忘了锁电脑,攻击者坐在你的办公桌前并访问了你的设备。

在这种情况下,如果他们速度不够快,会话过期可能会阻止他们访问您的会话。但是,他们现在可以访问您的电子邮件、Slack、密码库、SSH 代理、浏览器和文件。他们不需要你的活动会话,只需创建一个新会话即可。他们可以使用密码保险库或使用 "忘记密码 "发送密码重置邮件。

如果启用了 2FA,而你又带着手机或 yubikey 去吃午饭,在这种情况下仍然可以防止对网络应用程序的直接访问。但即便如此,攻击者也可以安装一个浏览器扩展,在你下次登录时将你的凭据发送给他们。

5、重新验证有风险
也许为了安全起见,你更喜欢短会话。然而,短会话在用户体验和安全性方面都有弊端。如果有人需要每 15 分钟重新登录一次,他们就会尽可能简化身份验证。这意味着每次都要打开密码库、选择更简单的密码或将密码放在剪贴板上。重新认证也有风险。较短的过期时间并不会自动降低整体风险。

总结
会话令牌非常安全。可以设置为永久不过期!