“记住我的密码”复选框如何工作?

时间:2010-12-27 11:02:08

标签: html cookies passwords

有许多登录表单,其中包含“记住我的密码”复选框,以便下次访问该网站时,浏览器会自动为您填写密码字段。

但我注意到现代浏览器中存在一种行为,例如Chrome / Firefox,它会显示一个通知栏以保存用户名/密码,即使该特定网页没有任何“记住密码”复选框。< / p>

所以我的问题是:

  1. 如果我必须在登录表单中输入“记住密码”复选框,用户检查时我该怎么办?我的意思是,我是否必须将密码存储在浏览器cookie(或本地存储)中?如果是,密码应加密还是纯文本?
  2. “保存密码”通知栏是浏览器的功能,还是有办法从网页调用它?

6 个答案:

答案 0 :(得分:69)

“保存密码”部分来自浏览器的密码管理器,只要它看到<input type="password">看起来真的要求输入密码。您可以使用autocomplete属性在大多数浏览器中禁止此操作:

<input type="password" name="password" autocomplete="off">

这不会验证,但通常无关紧要。

“记住我”部分与浏览器的密码管理器完全分开。 “记住我”标志是服务器的业务,它所做的就是摆脱它发回的cookie的到期日期。服务器将始终发送一个cookie(除非他们没有使用cookie来跟踪会话,但这很少见,并且不需要“记住我”),里面有一些东西来识别客户端用户。

如果您选中“记住我”,那么您告诉服务器您想要持久会话。为实现此目的,服务器将包含cookie的到期日期,并且到期日期将是未来的某个时间。当日期到来时,浏览器将过期并删除co​​okie;没有cookie,服务器将不再知道你是谁,你将不得不再次登录。

如果您不选中“记住我”,那么您将获得会话cookie。会话cookie没有到期日期,因此当浏览器退出时自动过期。会话cookie对共享计算机很有用。

执行摘要:

  • “保存密码”来自浏览器的密码管理器。
  • “记住我”是关于登录cookie的到期时间。

很抱歉这么长时间啰嗦,但其他答案似乎有些混乱和缺乏清晰度。

答案 1 :(得分:2)

问题1:

  1. 会话ID存储在cookie中。不存储AFAIK,密码或其散列。每当您登录时,都会在服务器端创建会话。如果您选中“记住我”,则服务器会传递一个cookie,其中包含会话ID(或加密的会话ID,或唯一标识用户会话的内容) cookie保存在客户端。
    当您下次登录时,服务器会检查会话中是否有cookie,如果它在那里(并且会话尚未被终止/过期 - 请参阅下面的第2点),那么服务器会将您识别为“Veera”并且让你在网站上。

  2. 许多网站提供“退出所有会话”选项(如Gmail:请参阅窗口底部)。这将使与用户关联的所有会话无效。

  3. 问题2:
    记住密码是浏览器提供的功能。浏览器会查看页面上是否有<input type=password>并提示您为此保存此密码。任何<input type=password>都会触发此事。

    记住您的服务器和记住密码的浏览器之间的区别在于您的密码是否已保存。结合“注销所有会话”选项,这比让浏览器保存密码要好得多。

答案 2 :(得分:0)

  1. 您需要一种方法来了解用户是谁。通常,这是通过在用户浏览器上保存cookie来完成的。您应该只使用不易被欺骗的东西,因此应该使用加密。您可以使用本地存储,只要您确信将在您的网站上使用的所有浏览器都支持它。

  2. 不,没有。拥有密码字段通常会触发条形码。

答案 3 :(得分:0)

  1. 是的,您需要使用cookies
  2. 这是一个浏览器功能,无法触发它

答案 4 :(得分:-2)

  1. 通常的做法应该是在客户端使用加密密码的cookie
  2. 我不完全确定我在说什么,但从用户的角度来看,在我看来,浏览器确定是否需要根据密码输入的存在显示其内部密码保存对话框在页面上。因此,只要您在页面上输入标准密码,浏览器就会尝试将用户/密码组合添加到其数据库中。

答案 5 :(得分:-5)

您需要在客户端保存cookie,加密课程。 现在使用HTML5我会建议您使用本地存储 我用这个jstorage plugin