Dan*_*n L 3 security authentication session-cookies ruby-on-rails-4
请参阅问题末尾的更新
在 Rails 4 中,我知道会话默认情况下只存在于浏览会话中。如果您关闭了浏览器,会话将不再存在。
但是,我认为情况并非如此。我有一个使用 Rails 提供的所有默认值的 Rails 4 应用程序。我正在处理一些身份验证代码并遇到了这个问题。
当用户登录系统时,他们可以通过复选框选择“记住我”。当他们选中此框时,会话的有效期应为 2 周。目标是当用户登录系统并关闭浏览器时,他可以再次打开浏览器并使用该应用程序,而无需再次进行身份验证。
另一方面,如果用户不想选中“记住我”框并登录应用程序并关闭浏览器,当浏览器再次打开时,用户应该被要求再次进行身份验证,因为他的会话“过期”时浏览器关闭。
问题是我的会话永远不会消失。我测试了一些简单的代码,其中在第 1 页上我在控制器中设置了一个会话变量,然后在第 2 页上显示了该会话。当我关闭浏览器并转到第 2 页(不是第 1 页,因此不会再次设置会话)时,会话仍然像以前一样存在。
我认为会话应该在浏览器默认关闭时过期?我也用“cookies”而不是会话尝试过这个,并得到了相同的结果。
简而言之,当用户关闭浏览器时,我怎样才能获得过期/死亡的会话/cookie?如果用户不希望他们保留所有会话,对我来说似乎不是很安全,而且我不会让我的用户每次关闭浏览器时删除他们的 cookie(可能在公共计算机上他们的登录信息应该只保留到他们关闭浏览器)。
更新 我想我找到了可能导致问题的原因。我使用 Chrome 作为我的浏览器,当浏览器关闭和打开时,我将它设置为“记住我离开的地方”。这似乎保存了所有会话/cookie。我也用 Gmail 验证了这一点。如果您设置了“记住我离开的地方”,但没有在 Gmail 中设置记住我的令牌,当您关闭/打开浏览器时,Gmail 会立即打开。如果您告诉 Chrome 在打开时打开一个新标签页,那么 Gmail 会像我预期的那样将您发送到登录页面。
这样就解决了一个问题,但整体问题仍然存在。我怎样才能使这个“安全”?假设您在公共计算机上,当浏览器打开时,恶意用户将浏览器设置为“记住我离开的地方”。因此,您登录了一个应用程序(例如 Gmail),但不要选中“记住我”框。因此,当您关闭浏览器时,您希望您的登录是“安全的”。但是如果另一个用户打开浏览器备份,他已经登录到你的应用程序。
这是我可以切实防止的事情吗?如果 Gmail 有这个缺陷(拥有一群非常聪明的开发人员),我是否应该担心这种情况存在?
| 归档时间: |
|
| 查看次数: |
2983 次 |
| 最近记录: |