在注销期间破坏用户会话是不是足够?

Posted

技术标签:

【中文标题】在注销期间破坏用户会话是不是足够?【英文标题】:Is destroying the user session enough during logout?在注销期间破坏用户会话是否足够? 【发布时间】:2012-04-22 02:20:18 【问题描述】:

我想了解我们如何在网站中实施安全的注销方法。我正在jsp中尝试注销页面。当用户单击 logout 时销毁会话是否足够?如果不是注销所需的步骤,对用户来说是一个安全的操作?

【问题讨论】:

【参考方案1】:

通常我会说是的,但这取决于您可能会在客户端存储哪些其他信息。例如,如果您有任何包含敏感信息的 cookie(希望您没有),那么您也应该清除它们。

【讨论】:

【参考方案2】:

如果您存储了任何与用户相关的 cookie,您也需要清理它们。换句话说,您的服务器用来识别用户的任何信息都应该被清除。如果它只是会话 - 那么在你的情况下就足够了。

【讨论】:

【参考方案3】:

定义“安全”。

您可能还想关闭缓存,这样点击“返回”按钮就不会显示潜在的敏感信息。除此之外,不知道您还关心什么。

【讨论】:

【参考方案4】:

取决于您的应用程序要求,您在注销期间需要什么功能。除了有时刷新或释放用户会话之外,会话中设置的变量很少,它们也应该被适当地释放。

【讨论】:

【参考方案5】:

是的,一旦你使 session 失效,那么 session id 就不再有效,可能 session cookie 也会被销毁,所以 session 就消失了(连同 session 中存储的所有数据)。

为了注销用户(从 servlet 或从 JSP 页面):

<% 
   HttpSession s = request.getSession(); 
   s.invalidate();
%>

这是最简单的部分。现在,如果您将一些重要的、用户特定的数据存储在自定义 cookie 中,请确保清理它们。这同样适用于 html 5 本地存储 - 它必须手动清理。

【讨论】:

你能解释一下吗这同样适用于 HTML 5 本地存储 - 它必须手动清理。 我不明白 本地(或网络)存储是可以在客户端使用 javascript 创建的伪数据库。它是简单的基于键值的存储。它就像非常大的 cookie,您可以使用一些基本结构创建。如果你正在使用它,那么你需要清理它,因为它与HttpSession或服务器端无关。

以上是关于在注销期间破坏用户会话是不是足够?的主要内容,如果未能解决你的问题,请参考以下文章

如何注销单个帐户?

刷新后登录会话被破坏

如果页面请求太快,Zend Session 会被破坏

Rails会话在DELETE请求时被破坏[重复]

codeigniter 中的会话令牌更改

unset 以某种方式破坏了所有完全不同的会话