屏蔽输入字符而不输入type = password

gis*_*rad 20 html javascript internet-explorer-11

所以我对新版浏览器保存密码有疑问.说我有一个像这样的密码框:

<input type="password" autocomplete="off" />
Run Code Online (Sandbox Code Playgroud)

iOS 7.1中的IE11和Safari等新浏览器已开始忽略密码框中的autocomplete ="off",并提供用户保存密码.在我的公司(银行),我们认为这是一个安全问题.

我想知道是否还有人解决了这个问题.也许有人编写了一个javascript插件来掩盖正常的输入[type = text],以便尊重autocomplete ="off"属性.

更新:

有关更多信息,请参阅msdn上的自动完成文档:http://msdn.microsoft.com/en-us/library/ie/ms533486%28v=vs.85%29.aspx

raf*_*uto 22

您可以使用自定义字体使用类型文本输入虚假密码:

DEMO

@font-face {
  font-family: 'password';
  font-style: normal;
  font-weight: 400;
  src: url(https://jsbin-user-assets.s3.amazonaws.com/rafaelcastrocouto/password.ttf);
}

input.key {
  font-family: 'password';
  width: 100px; height: 16px;  
}
Run Code Online (Sandbox Code Playgroud)

请注意,这只会引发更多安全问题.

  • @rafaelcastrocouto - 我不同意这应删除.这是我见过的唯一答案,可靠地允许输入隐藏文本而不需要密码管理器参与.虽然在某些用例中它可能被认为是不安全的,但是在很多其他情况下,用户能够输入对于站在他们后面的人或安全摄像头都不可见的文本非常有用 - 没有密码管理器弹出.这实际上不限于密码.我发现浏览器的这种湿护士方法很烦人. (15认同)
  • 你的帖子在这个问题上是一个相当不错的答案,但如果我给你一个upvote而其他人将在现实生活中使用它,我会感到有点害怕... (4认同)
  • 你应该提一下你的安全问题 (4认同)
  • 内容可以在其他地方复制/传输,因为它是纯文本 (3认同)
  • 这具有合法和安全的用途。例如受密码保护的后端,经理在此输入新员工的访问凭证。在这种情况下,很少需要为用户注册。通常这样的密码不需要视觉混淆,但有时可能会被要求。当您在该输入字段中有占位符时,就会出现问题;) (2认同)

Fuh*_*tor 12

这是一个想法,但我建议用于浏览器因不用于登录的密码而导致自动填充错误的情况.可能需要有更好的标准来识别登录屏幕,因此浏览器不必使用启发式搜索字段type="password".

使用密码字段加载表单type="text",因此浏览器的自动完成算法将忽略它.当用户在该字段中输入内容时,请切换它type="password".

我不是一个JavaScript程序员,但我破解了一个JSFiddle来展示它在理论上是如何工作的.

或许onfocus也是一种更好的方式,但我没有尝试过.


Spu*_*ley 1

首先,autocomplete = "off"应该在<form>元素上,而不是单个字段上。这是因为浏览器通常将给定表单中所有字段的值存储在一起(例如,允许为同一站点保存多个用户名/密码组合)。

将其设置在表单中,它应该适合您。(尽管已保存的密码通常仍会自动完成,因此在测试之前请清除密码存储)

但是,如果这被认为是安全问题,我建议您可能正在追逐错误的目标。

浏览器提供此功能的原因是用户希望能够存储他们的登录凭据。阻止他们这样做并不能阻止他们这样做,如果用户真的想这样做,他们仍然有很多方法可以绕过它——有一些浏览器插件明确设计用于终止这些功能autocomplete = "off"并允许所有密码被拯救。

用户最终如何存储密码最终不是您的安全问题,也不是您真正可以控制的事情。

事实上,如果我们阻止人们存储他们的密码,他们更有可能在多个地方使用相同的密码(仅仅是因为人们没有能力记住他们使用的每个网站的不同密码),因此通过防止如果他们不保存密码,您实际上可能会降低用户密码的安全性。

如果您的网站确实需要安全性而不允许保存密码,那么您将需要完全考虑替代机制。例如,现在的银行登录经常要求用户输入密码中的特定编号字符,例如“请输入密码中的第五个、第八个和第十二个字符”

然而,这些方案更旨在保护密码的传输而不是存储密码:通过仅输入某些给定字符,我们根本不必输入或传输整个密码,因此没有机会途中被黑客攻击。仍然假设用户可能会在某处记下密码(特别是如果他们必须找出字符串中的第十二个字符)

这种方案对于用户来说确实很痛苦,但确实提供了真正的登录安全级别,而无需实际输入或传输密码。然而,它给登录过程增加了额外的难度,这意味着只有像银行这样真正高安全性的网站才可能使用这种方案而不是常规密码。

  • 这确实没有解决问题。 (11认同)
  • 这并没有解决标题问题。 (4认同)