查看OWASP Session Management Cheat Sheet,每次会话到期时,用户都必须通过相同的Pre-Auth --> Auth --> ...
步骤进行新会话吗?
例如,如果会话过期且Web应用程序需要身份验证,用户是否必须在获得新会话之前重新登录Web应用程序?
答案 0 :(得分:1)
是的,用户必须再次登录。此外,新会话获取新会话ID非常重要,因为攻击者可能获得了会话ID。如果您重新验证相同的会话ID,攻击者也可以获得访问权限。见session fixation attack。
根据安全要求,您可能还需要为每个会话实现最长生命周期。通常攻击者会接管一个会话并尽可能地保持活动状态。在一段时间后,即使它处于活动状态,也会使会话失效,这是确保攻击者只能在有限时间内访问的有效方法。
答案 1 :(得分:1)
使用Cookie维护会话。
Http是一种无状态协议。每个服务器请求都是孤立的。没有请求有关于先前请求的任何信息。
假设名为A
的用户登录该站点。此站点使用会话并为用户设置会话数据。在内部,服务器创建一些值并与特定用户相关联。计算值12345
并将其与用户A
相关联。服务器决定将此值的名称设为sessionId
。它在cookie中发送sessionId
,此cookie将存储在用户的浏览器中。下次用户A
发出请求时,此cookie将被发送到服务器。服务器读取cookie sessionId
并找到它。然后,它会看到该cookie中的值是什么用户,即12345
是关联的。它发现此值与用户A
相关联,因此正在发出请求的用户A
。
假设此cookie过期,可能由于各种原因。用户都删除了他的cookie。或者在某些天之后,服务器会清除用户和会话之间的关联。在这种情况下,服务器将无法知道谁是发出请求的用户。因此,用户必须完成整个登录流程,才能进行生成。
所以,是的,如果会话过期且Web应用程序需要身份验证,则用户必须再次登录