http://mdsec.net/auth/382/
http://mdsec.net/auth/385/
由于两方面的原因,正确终止会话非常重要。首先,尽可能缩短一个会话的寿命可降低攻击者截获、猜测或滥用有效会话令牌的可能性。其次,如果用户不再需要现有会话,终止会话为用户提供一种使其失效的途径,在进一步降低上述可能性的同时,在某种程度上确保共享计算环境中会话的安全。会话终止功能的主要缺陷大都与无法满足这两个关键目标有关。
一些应用程序并不实施有效的会话终止功能。会话一旦建立,它在收到最后请求后的许多天内也仍然有效,直到服务器最终将其清除。即使令牌存在某种非常难以利用的缺陷(例如,确定每个有效令牌需要100 000次猜测),攻击者仍然能够截获最近访问应用程序的每一名用户的令牌。
一些应用程序并不提供有效的退出功能。
有些时候,应用程序根本不执行退出功能。用户没有办法要求应用程序终止他们的会话。
有些时候,退出功能实际上并不能帮助服务器终止会话。即使服务器从用户的浏览器中删除令牌(例如,通过发布一个清空令牌的Set-Cookie指令)。然而,如果用户继续提交这个令牌,服务器仍然接受它。
最糟糕的情况:当用户单击“退出”按钮时,应用程序并不与服务器通信,因此服务器不采取任何行动。相反,应用程序执行一段客户端脚本清空用户的cookie,在随后的请求中将用户返回到登录页面。访问这个cookie的攻击者就能使用会话,好像用户从未退出一样。