gpt4 book ai didi

javascript - 如何让浏览器保存密码,即使它没有将密码发送到服务器

转载 作者:行者123 更新时间:2023-11-28 08:15:26 25 4
gpt4 key购买 nike

情况:

出于安全原因,我从不将明文密码发送到我的服务器。它是客户端的 sha1ed,只有哈希值会发送到服务器。编辑:这只是我的安全性的一部分(我还使用 SSL、服务器端哈希、同步盐,...)请不要将其设为有关安全性的线程

为此,我有 2 个输入,第一个输入可见,名为“password”,另一个输入隐藏,名为“sha1password”。

当用户点击“登录”按钮时,JS代码会对“input#password”进行sha1,将其放入“input#sha1passord”中,并在向服务器发送POST之前清空“input#password”。

最后一步是为了防止浏览器保存 sha1 密码。因为如果您这样做,表单将填写 50 个字符的密码,用户会感到恼火。

问题:

这很好用,但浏览器不会保存密码,因为发送 POST 时“input#password”为空。有没有办法让浏览器保存密码而不将其发送到服务器?

最佳答案

要记住的事情

  • 如果输入多次密码,Chrome 不会保存密码
  • 在页面加载后(即使在 jquery $(function(){}) 初始化之后,也会调用 Chrome 对许多密码进行检查
  • 要添加另一个密码输入,只需在 100 毫秒后使用 setTimeout 函数即可

我的解决方案

嗨,我终于知道浏览器是如何工作的了。他们不喜欢有很多输入 type=password 的表单。

我将#sha1password 重命名为#password。在第一个 HTML 页面中,我必须没有其他密码输入,所以我只回显 #password 输入!这样,加载页面后,浏览器会看到一个简单的登录表单并启用自动完成功能(IE除外,但这一个很愚蠢,我不关心它......微软人怎么总是可以开发不同的软件?)。

页面初始化 + 100 毫秒超时后,我添加了一个名为 #clearPassword 的新输入 type=password。然后,我复制 #password 输入中的自动完成值。然后,我使用宽度+高度为 0px 隐藏 #password 输入(显示无内容使其不发送到服务器)。

当用户在#clearPassword 输入中键入密码时,我会清空#password 输入框。这将使新输入的密码进行哈希处理,否则#clearPassword 保留哈希值。

当用户单击“登录”时,仅当 #password 框为空时我会对 #clearPassword 输入进行 sha1,并输出 #clearPassword 中的值。如果#password不为空,它是自动完成的哈希值,这样就可以了。

最重要的是,在将表单发送到服务器之前,我分离了 $clearPassword 以防止 chrome 将其发送到服务器。

你就完成了;) Chrome 只存储明文密码的哈希值

关于javascript - 如何让浏览器保存密码,即使它没有将密码发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com