我们的安全团队要求我们在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>
请注意,建议的所有替代方案here都不起作用。
使用两个单独的其他隐藏密码输入,每个具有不同的虚拟值似乎适用于用户实际将值输入受保护字段并单击提交的情况。但是,如果该字段留空并且单击了提交按钮,则密码管理器会再次弹出。有趣的是,chrome(版本55)根本没有弹出密码管理器,这很好。有没有人能更好地解决这个问题?
答案 0 :(得分:8)
这适用于当前的Firefox(51),Chrome(55),Edge(38)和IE(11):
使用三个不同的隐藏密码输入和三个不同的值。这似乎阻止浏览器激活密码管理器,因为它无法猜测这三个值中的哪一个是要使用的新密码。
<form name="testform" action="index" method="post"
autocomplete="off">
<input name="disable-pwd-mgr-1" type="password" id="disable-pwd-mgr-1" style="display: none;" value="disable-pwd-mgr-1" />
<input name="disable-pwd-mgr-2" type="password" id="disable-pwd-mgr-2" style="display: none;" value="disable-pwd-mgr-2" />
<input name="disable-pwd-mgr-3" type="password" id="disable-pwd-mgr-3" style="display: none;" value="disable-pwd-mgr-3" />
<label for="protected-input">Protected Input</label>
<input autocomplete="aus" type="password" size="16" maxlength="16" id="protected-input" name="protected-input" accept="numbers" />
<button name="next" id="next" type="submit" value="Next">
NEXT
</button>
</form>
在过去几年中,浏览器制造商已开始忽略&#34; autocomplete=off
&#34;密码表单的选项。例如,请参阅the change issue for Firefox。
原因很简单:很多网站都希望根据对安全性的错误理解来禁用登录表单的自动完成功能。允许用户将密码存储在安全密码管理器中(如当前浏览器所提供的那样)不存在安全风险。实际上,它允许用户为不同的网站使用安全的个人密码来帮助实现安全性。
因此,请勿尝试禁用浏览器密码管理器,因为您认为这会增加用户的安全性。它没有。
在某些情况下,您可能不想让密码管理器弹出,例如,因为输入的密码是一次性密码或棕褐色,第二次没有用。但是在一次性密码/棕褐色的情况下,为什么要使用密码输入呢?只需使用正常输入。
答案 1 :(得分:4)
只需添加以下内容:
data-lpignore="true"
输入元素上的将禁用该字段上的Last Pass。不知道其他密码管理器是否也有类似的内容。
答案 2 :(得分:2)
某些浏览器可能会在输入字段本身上尊重autocomplete="off"
:
<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" accept="numbers" autocomplete="off" />
<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>
但是,实际上,浏览器(和扩展程序)通常会忽略此指令。
答案 3 :(得分:2)
现代浏览器在输入密码字段上遵守autocomplete="new-password"
。但是IE不支持。
有关浏览器的支持,请参考:https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete