问题标签 [remember-me]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
3928 浏览

security - “记住我”身份验证功能,是否总是意味着“不安全”网站?

我正在考虑在我的 web 应用程序上实现经典的“记住我”复选框,以允许经过身份验证的用户在他返回访问我的网站后被“记住”。

GmailFacebook和其他人都有这种功能,但我不太确定它有多安全。

Spring Security这样的 Java 框架使用“基于哈希的令牌方法”。生成的令牌(使用用户名、密码、过期时间和私有密钥)存储在客户端的 Cookie 'token=567whatever567' 中。然后在用户下次回来时重新使用该令牌以重新验证用户身份。

我担心即使登录过程发生在 https 连接下,在每个后续的 http 请求中,cookie 都会在网络上以未加密的方式发送。

基本上每个人都可以读取令牌并重用它来进行身份验证。

我想看看 Gmail 或 Facebook 是如何实现这个功能的。我可以在 FB 中看到一些 Cookie,例如 'presence=DJ267619445G09H0L15228675 .....',其他在 Gmail 中。
我不太确定他们是否使用其他技巧来防止有人试图冒充其他用户。

我将尝试使用cURL之类的东西来模拟自己,看看他们是否只使用特定的令牌来记住用户。
如果是的话,在我看来这是一个很大的安全问题。也许不是 facebook(我不在乎),但如果您没有设置“始终使用 https ”,则使用 Gmail,将使用 http 连接,它将通过互联网发送您未加密的令牌。
你怎么看?

我还注意到 Facebook 用户名/密码字段在 http(不是 https)下公开。在这方面,我也想知道:是否所有网站都通过 http 不安全“本质上”公开用户名/密码字段。一旦通过 http 发送请求,就没有“重定向到 https”可以解决“全世界可见的凭证”问题。

谢谢

编辑
我的担心是有根据的http://codebutler.com/
感谢Firesheep的创建者强调了这个问题!!!

0 投票
1 回答
194 浏览

email - 网站登录时记住我选项的意义何在?是什么阻止了开发人员始终记住用户?

它仅仅是对饼干的古老恐惧(在某些地方仍然存在)的产物吗?我还想知道从出站电子邮件中简单地传递用户名是否是不好的做法。

0 投票
5 回答
27976 浏览

asp.net-mvc - ASP.NET MVC 记住我

在搜索了很多之后,我没有得到任何答案,最后我不得不回复你。下面我详细解释我的问题。太长了,请不要放弃阅读。我已经用简单的语言解释了我的问题。

我一直在开发一个 asp.net mvc 项目。我正在使用标准的 ASP.NET 角色和成员资格。一切正常,但记住我的功能根本不起作用。我列出了所有工作细节。希望你们能帮我解决这个问题。

我只需要这个:

我需要用户登录到 Web 应用程序。在登录期间,他们可以使用记住我或不使用它登录。如果用户使用记住我登录,我希望浏览器记住他们很长时间,比如说至少一年或相当长的时间。他们在 www.dotnetspider.com、www.codeproject.com、www.daniweb.com 和许多其他网站上的做法。如果用户在不记得我的情况下登录,那么浏览器应该允许访问网站大约 20 -30 分钟,然后他们的会话应该过期。当用户登录并关闭浏览器而不注销时,他们的会话也应该过期。

注意:我通过为用户创建自己的 talbes 并针对我的数据库表进行身份验证,在我的其他项目中设置 cookie 和会话,成功地实现了上述功能,而无需使用标准的 asp.net 角色和成员资格。但是对于这个项目,我们从一开始就使用标准的 asp.net 角色和成员资格。我们认为它会起作用,并且在测试时构建了所有内容之后,它就不起作用了。现在我们不能用标准的 asp.net 角色和成员资格替换现有的功能,用我自己的自定义用户表和所有东西,你明白我在说什么。

要么是标准 asp.net 角色和成员资格功能存在某种错误,要么我对标准 asp.net 角色和成员资格的整个概念有错误。我已经在上面说明了我想要的。我认为这是非常简单和合理的。

我做了什么

  1. 使用用户名、密码和记住我字段的登录表单。
  2. 我在 web.config 中的设置:

    <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880"/>
    </authentication>

  3. 在我的控制器动作中,我有这个:

    FormsAuth.SignIn(userName, rememberMe);

    public void SignIn(string userName, bool createPersistentCookie) { FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); }

现在问题如下:

我已经在上面的部分“我只需要这个”中说过。用户可以成功登录系统。他们的会话存在的时间与 web.config 中超时值中指定的时间一样多。我还提供了我的 web.config 示例。在我的示例中,如果我将超时设置为 5 分钟,那么用户会话将在 5 分钟后过期,没关系。但如果用户关闭浏览器并重新打开浏览器,用户仍然可以在没有登录的情况下进入网站,直到“超时”中指定的时间没有过去。超时值的滑动到期也可以正常工作。现在,如果用户在选中记住我的情况下登录系统,用户会话在 5 分钟后仍会过期。这不是好的行为,是吗?我的意思是说,如果用户登录系统时勾选了记住我,他应该被记住很长时间,直到他没有 t 退出系统或用户未手动从浏览器中删除所有 cookie。如果用户在不记得我的情况下登录系统,他的会话应该在 web.config 中指定的超时期限值之后过期,并且如果用户关闭浏览器。问题是,如果用户关闭浏览器并重新打开它,他仍然可以在不登录的情况下进入网站。

我在网上搜索了很多关于这个主题的内容,但我找不到解决方案。在Scott Gu 发表的关于完全相同主题的博文 ( http://weblogs.asp.net/scottgu/archive/2005/11/08/430011.aspx ) 中。用户在他们的评论中抱怨同样的事情,但斯科特先生没有给出简单的解决方案。

我在以下地方阅读它: http ://weblogs.asp.net/scottgu/archive/2005/11/08/430011.aspx http://geekswithblogs.net/vivek/archive/2006/09/14/91191。 aspx

我想这是很多用户的问题。从 Scott Gu 先生的博客文章中可以看出。

您的帮助将不胜感激。提前致谢。

0 投票
1 回答
3406 浏览

spring-security - Spring Security 中的记住我服务的问题

我正在尝试使用 Spring 在我的网站中实现“记住我”功能。persistent_logins 表中的 cookie 和条目已正确创建。此外,当用户名显示在页面顶部时,我可以看到正在恢复正确的用户。

但是,一旦我尝试访问此用户在“记住”后返回时的任何信息,我就会收到 NullPointerException。看起来好像没有再次在会话中设置用户。

我的 applicationContext-security.xml 包含以下内容:

我认为这可能与按用户名查询用户有关,但如果此查询不正确,登录肯定无法正常工作?

对此的任何帮助将不胜感激。

谢谢,齿轮。

0 投票
1 回答
1520 浏览

spring-security - 在春季安全中覆盖自动登录的问题?

问候大家使用spring security 3记住我服务如下

我想在自动登录中执行一些逻辑,所以我试图覆盖 AbstractRememberMeServices,如下所示:

但是自动登录没有任何动作,用户自动登录但没有打印打印语句?怎么了?

0 投票
2 回答
13476 浏览

security - 带有会话 Cookie 的 Spring Security RememberMe 服务

我正在使用 Spring Security 的 RememberMe 服务来保持用户的身份验证。

我想找到一种简单的方法将 RememberMe cookie 设置为会话 cookie,而不是使用固定的过期时间。对于我的应用程序,cookie 应该一直存在,直到用户关闭浏览器。

关于如何最好地实现这一点的任何建议?是否担心这是一个潜在的安全问题?

这样做的主要原因是,使用基于 cookie 的令牌,我们负载均衡器后面的任何服务器都可以为受保护的请求提供服务,而无需依赖存储在 HttpSession 中的用户身份验证。事实上,我已经明确告诉 Spring Security 永远不要使用命名空间创建会话。此外,我们使用的是 Amazon 的 Elastic Load Balancing,因此不支持粘性会话。

注意:虽然我知道截至 4 月 8 日,亚马逊现在支持粘性会话,但由于其他一些原因,我仍然不想使用它们。也就是说,一台服务器的过早关闭仍然会导致与其关联的所有用户的会话丢失。 http://aws.amazon.com/about-aws/whats-new/2010/04/08/support-for-session-stickiness-in-elastic-load-balancing/

0 投票
1 回答
2363 浏览

symfony1 - sfRemember cookie / sfGuard 的问题记住我

我正在使用带有 Doctrine 的 Symfony 1.4。

抱歉,如果这是一个愚蠢的问题,但究竟需要在 sfDoctrineGuardPlugin 之上构建什么才能让“记住我”功能正常工作?

当我登录一个用户时,sfRemember cookie 的默认寿命为 15 天,并且记忆密钥保存在插件的 sf_guard_remember_key 表中。

无需对插件进行任何调整,sfGuardSecurityUser SignIn() 方法就会创建 cookie,但 Signout() 方法会删除它,除非您已登录,否则不会留下任何 cookie!

我可以看到数据库表将 cookie 保存为 sf_guard_user 的关系,但如果 cookie 消失了,那就不好了......

如果有人能告诉我我在这里缺少什么,我将不胜感激,理想情况下,如果我阻止 Signout() 方法删除 cookie,我是否需要自己编写代码来读取 cookie 或者这是在某处自动化/不知何故?我有标准的 Symfony 1.4 和 sfDoctrineGuardPlugin 安装。

这一切似乎完全错误,并且不存在关于此的文档。

任何帮助将不胜感激。

0 投票
3 回答
11990 浏览

ajax - ExtJS:使用“记住我”功能登录

我正在尝试使用非常常见的“记住我”功能创建一个简单的登录窗口。登录验证采用 AJAX 风格,因此浏览器不会记住我的输入。

我的方法是使用内置state功能,但如何使用它让我感到困惑。

我知道我必须实现该getState方法,但是在哪个组件上(我的猜测是在两个文本字段上)?我没有意识到的另一件事是,按钮上的单击事件如何连接到我的文本字段的状态属性?

0 投票
2 回答
1030 浏览

ruby-on-rails - 让 Authlogic '不记得我'

我希望我的用户会话在用户关闭浏览器时结束。但是即使打开新浏览器,authlogic 似乎也能记住会话。我尝试设置 @user_session.remember_me = false 但这没有帮助。我深入研究了 save_cookie 方法,它确实使用 :expires => nil 保存了 cookie。我是否正确地假设这将使浏览器会话中的 cookie 过期?

关于我的 authlogic 配置的唯一特殊之处是我设置了 c.perishable_token_valid_for(0) 以便邀请码永不过期。并不是说我认为这与此有关..

0 投票
1 回答
940 浏览

asp.net - 在登录表单中记住我

我有一个“登录”控件,希望有一个“记住我”选项。我怎样才能做到这一点?