GWT:在cookie中存储会话ID,然后是什么?

时间:2010-08-18 00:00:47

标签: session gwt gwt-rpc

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

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

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

谢谢!

〜斯科特

2 个答案:

答案 0 :(得分:8)

类似的问题:question on GWT, Cookies and webpage directing
您应该记住的一件重要事情:不要单独依赖cookie - 在请求的有效负载中传输会话ID /令牌,并将其与服务器端的cookie值进行比较。这将阻止XSRF攻击。 那是你应该担心的事情。

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

  

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

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

  

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

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

答案 1 :(得分:1)

要记住登录,您需要安全地生成唯一的会话ID。通常,这是放在一个cookie中。我建议使用一个为你做会话cookie的框架。如果出错,可能会使您的网站受到滥用。需要考虑的事项包括:

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

您的其他问题的答案是。

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