最近Firefox开始忽略密码字段的autocomplete =“off”,现在允许用户一直保存密码.我们有成千上万用户使用的大型应用程序,根据法律,我们需要确保密码永远不会以明文形式保存在客户端计算机上.
有什么方法可以阻止Firefox保存这些密码吗?我们找到了Chrome的解决方法(它只保存了屏幕上的第一个密码字段,因此我们在真正的密码字段之前添加了一个隐藏的密码字段),但我们对Firefox没有任何好运.截至目前,我们唯一的选择是完全禁用Firefox支持.
是的,我意识到阻止用户保存密码很烦人,但我们别无选择……这是联邦法规强加给我们的要求.
最佳答案
这个问题在办公室引发了很多争论,但我们想出了一个解决方案.
使用按钮单击事件提交表单(而不是正常的提交按钮).然后填充隐藏字段,删除可见字段的值并提交. JSFIDDLE
点击事件样本:
$('#post').click(function(e) {
var password = $("#password");
var realPassword = $("#therealdeal");
realPassword.val(password.val());
password.val('');
$('#form').submit();
});
看来,在提交事件中,浏览器将序列化表单并使用serlized对象值进行提交.这就是为什么你不能简单地做类似的事情
不工作的样本:
$('#form').submit(function(e) {
var password = $("#password");
var realPassword = $("#realpassword");
realPassword.val(password.val());
password.val('');
});
即使在真正的提交发生之前清除了dom上的值,它仍然从序列化的表单对象中读取.
在IE,Firefox和Chrome中进行了测试