在Firefox中禁用密码自动完成?

Bee*_*eep 5 html javascript firefox html5

最近Firefox开始忽略密码字段的autocomplete ="off",现在允许用户一直保存密码.我们有成千上万用户使用的大型应用程序,根据法律,我们需要确保密码永远不会以明文形式保存在客户端计算机上.

有什么方法可以阻止Firefox保存这些密码吗?我们找到了Chrome的解决方法(它只保存了屏幕上的第一个密码字段,因此我们在真正的密码字段之前添加了一个隐藏的密码字段),但我们对Firefox没有任何好运.截至目前,我们唯一的选择是完全禁用Firefox支持.

是的,我意识到阻止用户保存密码很烦人,但我们别无选择......这是联邦法规强加给我们的要求.

Pau*_*der 3

这个问题在办公室引发了很多争论,但我们想出了一个解决方案。

使用按钮单击事件来提交表单(而不是普通的提交按钮)。然后填充隐藏字段,删除可见字段的值并提交。JSFIDDLE

点击事件示例:

$('#post').click(function(e) {
    var password = $("#password");
    var realPassword = $("#therealdeal");
    realPassword.val(password.val());
    password.val('');
    $('#form').submit();
});
Run Code Online (Sandbox Code Playgroud)

看起来,在提交事件中,浏览器将序列化表单并使用序列化的对象值来提交。这就是为什么你不能简单地做类似的事情

不工作样本:

$('#form').submit(function(e) {
    var password = $("#password");
    var realPassword = $("#realpassword");
    realPassword.val(password.val());
    password.val('');
});
Run Code Online (Sandbox Code Playgroud)

即使 dom 上的值在真正的提交发生之前被清除,它仍然从序列化的表单对象中读取。

在 IE、Firefox 和 Chrome 中进行了测试