7

我目前正在使用 GWT 制作一个网站,托管在 AppEngine 上。我正在使用自己正在制作的登录信息(我知道 Google 提供了一些带有 GWT 的东西,但我需要我自己的登录系统),而且我已经尝试找出会话已有一段时间了。我找到了一些教程,我正在阅读的网站之一是http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ

那里有一个关于“如何记住登录”的部分。我知道如何通过 RPC 调用获取会话 ID 并将其存储在客户端的 cookie 中。我不明白的是,最终在一天左右之后,用户回来了,我应该从 cookie 中获取会话 ID 并将其发送回服务器。为了安全地评估会话 ID 是否仍然合法,并提取有关用户的所有必要信息,我应该在服务器上做什么?

其他问题: 1. 什么会使会话 ID 发生变化?2. 如果用户在笔记本电脑上,而用户去了其他地方怎么办。他是否仍然能够安全地重新登录而无需再次输入他的登录名和密码?

谢谢!

~斯科特

4

2 回答 2

8

类似的问题:关于 GWT、Cookies 和网页导向的问题。
您应该记住的一件重要事情:不要仅依赖 cookie - 在请求的有效负载中传输会话 ID/令牌,并将其与服务器端的 cookie 值进行比较。这将防止 XSRF 攻击。这是你应该担心的事情。

如何处理会话 ID 的策略取决于您对应用程序安全性的重视程度以及它是什么类型的应用程序。例如,您可以从不同的 IP 在 GMail 上使用相同的令牌登录 - 我认为他们允许这样做,因为用户的 IP 在会话中更改是很常见的。但是,他们确实添加了一项功能,可让您查看用户最近从哪些 IP 登录。并且不要忘记具有动态 IP 的用户(相当多) - 如果您跟踪令牌和 IP,您基本上将不允许这些用户在会话之间保持登录状态。

为了安全地评估会话 ID 是否仍然合法,并提取有关用户的所有必要信息,我应该在服务器上做什么?

您应该跟踪数据库中的会话 ID/登录对。

什么会使会话 ID 发生变化?

要么过期,要么用户尝试使用未绑定到其 IP 的令牌登录。您也可以添加自己的规则 - 例如登录次数等。为了提高安全性,您可以在每个新登录/会话上生成一个新的会话 ID/令牌(用户使用旧令牌进行身份验证,服务器检查它是否有效并将他/她从现在开始应该使用的新令牌发回给用户)。

于 2010-08-18T09:12:28.050 回答
1

要记住登录信息,您需要安全地生成唯一的会话 ID。通常,这被放置在 cookie 中。我建议使用为您执行会话 cookie 的框架。弄错可能会使您的网站容易被滥用。需要考虑的事项包括:

  • 您是否需要担心 cookie 被盗。用户的 IP 地址应编码在会话 ID 中,或链接到会话 ID。检查每个页面访问的 IP 地址。
  • 确保您的登录是在加密会话上。否则,您将在网络上以明文形式公开凭据。
  • 会话应该持续多长时间。他们应该在一个固定的时间限制后超时。这可能长达数小时或数天。
  • 记住我应该在不同的 cookie 上有不同的功能。它需要包含一些可以用来识别用户的东西。根据您的安全要求,它可能需要是加密值。此 cookie 可以有更长的超时时间。

您的其他问题的答案是。

  1. 客户端上的任何内容都不会更改会话 ID。每次登录都应重新生成会话 ID。
  2. 根据会话 ID 的安全程度,他们可能必须登录。安全会话 cookie 通常对 IP 地址进行编码以防止 cookie 被盗。如果是这样,笔记本电脑用户将需要再次登录。
于 2010-08-18T01:13:26.980 回答