我们的安全团队要求我们禁用 HTML 表单上受保护字段的密码管理器。例如,下面是一个过度简化的 HTML 表单。当我点击提交按钮时,firefox(版本 51.0.1)弹出密码管理器。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<body>
<form name="testform" action="disable-pwd-mgr.htm" method="post"
autocomplete="off">
<label for="protected-input">Protected Input</label>
<input type="password" size="16" maxlength="16" id="protected-input" name="protected-input" accept="numbers" />
<input type="password" id="disable-pwd-mgr-1" style="display: none;" value="stop-pwd-mgr-1"/>
<input type="password" id="disable-pwd-mgr-2" style="display: none;" value="stop-pwd-mgr-2"/>
<button name="next" id="next" type="submit" value="Next">
NEXT
</button>
</form>
</body>
</html>
请注意, 此处 建议的所有替代方案均无效。
- autocomplete=off 无效。
- 有另一个密码类型的隐藏输入字段不起作用。
使用两个单独的附加隐藏密码输入,每个具有不同的虚拟值似乎适用于用户实际将值输入受保护字段并单击提交的情况。但是如果该字段留空并单击提交按钮,密码管理器将再次弹出。有趣的是,chrome(版本 55)根本不会弹出密码管理器,这很好。有没有人有更好的解决方案来解决这个问题?
原文由 code4kix 发布,翻译遵循 CC BY-SA 4.0 许可协议
这适用于当前的 Firefox (51)、Chrome (55)、Edge (38) 和 IE (11):
使用具有三个不同值的三个不同的隐藏密码输入。这似乎阻止了浏览器激活密码管理器,因为它无法猜测三个值中的哪一个是要使用的新密码。
在过去的几年里,浏览器制造商已经开始忽略密码形式的“
autocomplete=off
”选项。例如,请参阅 Firefox 的更改问题。原因很简单:基于对安全性的错误理解,许多网站希望禁用登录表单的自动完成功能。允许用户将密码存储在安全的密码管理器中(如当前浏览器所提供的那样)并不存在安全风险。事实上,它允许用户为不同的网站使用安全的个人密码,从而有助于提高安全性。
因此,不要试图禁用浏览器密码管理器,因为您认为这会增加用户的安全性。它没有。
可能存在您不希望弹出密码管理器的情况,例如,因为输入的密码是一次性密码或第二次没有用的 tan。但是在一次性密码/tan 的情况下,为什么要使用密码输入呢?只需使用普通输入即可。
关于Security Stackexchange问题的讨论