Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让浏览器保存密码,即使它';它没有发送到服务器_Javascript_Php_Passwords_Password Protection - Fatal编程技术网

Javascript 如何让浏览器保存密码,即使它';它没有发送到服务器

Javascript 如何让浏览器保存密码,即使它';它没有发送到服务器,javascript,php,passwords,password-protection,Javascript,Php,Passwords,Password Protection,情况: 出于安全原因,我从不向服务器发送清除密码。 它是sha1ed客户端,只有散列被发送到服务器。 编辑:这只是我安全性的一部分(我还使用SSL、服务器端哈希、同步盐等)请不要将其作为关于安全性的线程 为此,我有两个输入,第一个是可见的,名为“password”,另一个是隐藏的,名为“sha1password” 当用户点击“登录”按钮时,JS代码会将“输入密码”置为“输入密码”,并在向服务器发送帖子之前清空“输入密码” 最后一步是防止浏览器保存sha1密码。因为如果您这样做,表单将填充50个字

情况:

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

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

当用户点击“登录”按钮时,JS代码会将“输入密码”置为“输入密码”,并在向服务器发送帖子之前清空“输入密码”

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

问题:


这很好,但浏览器不会保存密码,因为发送帖子时“输入密码”为空。是否有一种方法允许浏览器保存密码而不将其发送到服务器?

需要记住的事项

  • 如果有很多密码输入,Chrome不保存密码
  • 加载页面后(甚至在jquery
    $(function(){})
    初始化之后)会调用Chrome检查多个密码
  • 要添加另一个密码输入,只需在100毫秒后使用setTimeout函数
我的解决方案

嗨,我终于找到了浏览器的工作原理。 他们不喜欢有很多输入类型=密码的表单

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

在页面初始化+100ms超时后,我添加了一个新的输入类型=密码,称为#clearPassword。然后复制#密码输入中的自动完成值。然后我使用宽度+高度将#密码输入隐藏到0px(显示无使其未发送到服务器)

当用户在#clearPassword输入中键入密码时,我会清空#password输入框。这将使新键入的密码散列,否则,clearPassword将保留散列值

当用户单击登录时,仅当#密码框为空时我将输入#clearPassword并输出#clearPassword中的值。如果#password不是空的,它是自动完成的哈希值,这是确定的

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


你完成了;)chrome只存储清除密码的散列

可能的重复密码不会真正增加任何安全性。如果有人嗅探到连接,他们将获得sha1password,然后将其发送到服务器并获得身份验证。你为什么不使用SSL?@Cerbrus与此不同。他知道如何避免向服务器发送密码——他的问题是如何让浏览器在不发送密码的情况下将密码保存在其密钥链中。@Barmar:问题不是关于安全性,而是关于将密码保存到浏览器中。我理解这一点。但是你在浏览器中保存密码时遇到问题的唯一原因是你在用sha1password做傻事。你这么做是因为你认为它增加了安全性,但事实并非如此。因此,请像其他人一样输入密码,浏览器将正确保存密码。