mat*_*321 416 browser security passwords autocomplete
为政府医疗保健机构工作的乐趣之一就是必须处理与处理PHI(受保护的健康信息)有关的所有偏执.不要误会我的意思,我尽一切可能保护人们的个人信息(健康,经济,上网习惯等),但有时人们会有点过于兴奋.
例证:我们的一位州客户最近发现浏览器提供了保存密码的便利功能.我们都知道它已经存在了一段时间并且是完全可选的,并且由最终用户决定是否使用或不使用它.然而,目前有一点骚动,我们被要求找到一种方法来禁用我们网站的功能.
问题:网站是否有办法告诉浏览器不要提供密码?我很长一段时间都在网络开发,但不知道我之前遇到过这种情况.
任何帮助表示赞赏.
Mar*_*son 321
我不确定它是否适用于所有浏览器,但您应该尝试在表单上设置autocomplete ="off".
<form id="loginForm" action="login.cgi" method="post" autocomplete="off">
Run Code Online (Sandbox Code Playgroud)
禁用表单和密码存储提示以及阻止在会话历史记录中缓存表单数据的最简单方法是使用值为"off"的自动完成表单元素属性.
来自http://developer.mozilla.org/En/How_to_Turn_Off_Form_Autocompletion
一些小的研究表明这适用于IE,但我不会保证;)
@Joseph:如果严格要求通过实际标记传递XHTML验证(不知道为什么会这样),理论上你可以在之后用javascript添加这个属性但是禁用了js的用户(可能是你的用户库可忽略不计的数量)如果您的网站需要js,则为零,但仍会保存其密码.
jQuery示例:
$('#loginForm').attr('autocomplete', 'off');
Run Code Online (Sandbox Code Playgroud)
Mik*_*one 37
我一直在努力解决这个问题,这个问题有着独特的变化.特权用户无法使用已保存的密码,但普通用户需要它.这意味着特权用户必须登录两次,第二次强制不保存密码.
根据此要求,标准autocomplete="off"方法不适用于所有浏览器,因为密码可能是从第一次登录时保存的.一位同事在使用新密码字段聚焦时找到了替换密码字段的解决方案,然后专注于新密码字段(然后挂钩相同的事件处理程序).这有效(除了它在IE6中引起了无限循环).也许有一种解决方法,但它导致我偏头痛.
最后,我试着在表单之外输入用户名和密码.令我惊讶的是,这有效!它适用于IE6,以及Linux上当前版本的Firefox和Chrome.我还没有进一步测试,但我怀疑它在大多数浏览器中都有效(但如果有一个浏览器并不关心是否没有形式,那就不会让我感到惊讶).
下面是一些示例代码,以及一些jQuery以使其工作:
<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>
<form id="theForm" action="/your/login" method="post">
<input type="hidden" id="hiddenUsername" name="username"/>
<input type="hidden" id="hiddenPassword" name="password"/>
<input type="submit" value="Login"/>
</form>
<script type="text/javascript" language="JavaScript">
$("#theForm").submit(function() {
$("#hiddenUsername").val($("#username").val());
$("#hiddenPassword").val($("#password").val());
});
$("#username,#password").keypress(function(e) {
if (e.which == 13) {
$("#theForm").submit();
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
Mur*_*dız 35
只是用
readonly onfocus ="this.removeAttribute('readonly');"
此外
自动填充="关闭"
到你不想记住表单数据(输入(S) username,password等等),如下图所示:
<input type="text" name="UserName" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" >
<input type="password" name="Password" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" >
Run Code Online (Sandbox Code Playgroud)
测试在主流浏览器的最新版本的IE Google Chrome,Mozilla Firefox,Microsoft Edge等,就像一个魅力.希望这可以帮助...
why*_*to8 29
好吧,这是一个非常古老的帖子,但我仍然会提供我的解决方案,我的团队一直试图实现这一目标.我们刚刚在表单中添加了一个新的input type ="password"字段,并将其包装在div中并使div隐藏起来.确保此div在实际密码输入之前.这对我们有用,它没有提供任何保存密码选项
Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview
HTML:
<form method="post" action="yoururl">
<div class="hidden">
<input type="password"/>
</div>
<input type="text" name="username" placeholder="username"/>
<input type="password" name="password" placeholder="password"/>
</form>
Run Code Online (Sandbox Code Playgroud)
CSS:
.hidden {display:none;}
Run Code Online (Sandbox Code Playgroud)
Joe*_*orn 16
您可以通过随机化每个节目上用于密码字段的名称来阻止浏览器匹配表单.然后浏览器会看到相同网址的密码,但无法确定密码是否相同.也许它控制着别的东西.
更新:请注意,这应该是除了使用自动完成或其他手段,而不是它们的替代,供他人指示的原因.
另请注意,这只会阻止浏览器自动填写密码.它不会阻止它将密码存储在浏览器选择使用的任何安全级别.
ven*_*mus 13
最干净的方法是使用autocomplete="off"标记属性,但是当您使用Tab切换字段时,Firefox无法正确遵守它.
你可以阻止这种情况的唯一方法是添加一个虚假的隐藏密码字段,欺骗浏览器在那里填充密码.
<input type="text" id="username" name="username"/>
<input type="password" id="prevent_autofill" autocomplete="off" style="display:none" tabindex="-1" />
<input type="password" id="password" autocomplete="off" name="password"/>
Run Code Online (Sandbox Code Playgroud)
这是一个丑陋的黑客,因为你改变了浏览器的行为,这应该被认为是不好的做法.只有在你真的需要时才使用它.
注意:这将有效地阻止密码自动填充,因为FF将"拯救"的值#prevent_autofill(这是空的),并会尝试填充任何保存的密码存在,因为它总是使用第一个type="password"相应的"用户名"后,它发现在DOM输入输入.
Asi*_*sik 12
我已经测试过在所有主流浏览器中在表单标记中添加autocomplete ="off".事实上,到目前为止,美国大多数人使用IE8.
浏览器没有询问"保存密码".此外,以前保存的用户名和密码未填充.
2014年6月11日更新
最后,下面是一个使用javascript的跨浏览器解决方案,它在所有浏览器中都运行良好.
需要在登录表单中删除"表单"标记.在客户端验证之后,将该凭据放入隐藏表单并提交.
另外,添加两种方法.一个用于验证"validateLogin()",另一个用于监听输入事件,同时单击输入文本框/密码/按钮"checkAndSubmit()".因为现在登录表单没有表单标签,所以输入事件不在这里工作.
HTML
<form id="HiddenLoginForm" action="" method="post">
<input type="hidden" name="username" id="hidden_username" />
<input type="hidden" name="password" id="hidden_password" />
</form>
Username: <input type="text" name="username" id="username" onKeyPress="return checkAndSubmit(event);" />
Password: <input type="text" name="password" id="password" onKeyPress="return checkAndSubmit(event);" />
<input type="button" value="submit" onClick="return validateAndLogin();" onKeyPress="return checkAndSubmit(event);" />
Run Code Online (Sandbox Code Playgroud)
使用Javascript
//For validation- you can modify as you like
function validateAndLogin(){
var username = document.getElementById("username");
var password = document.getElementById("password");
if(username && username.value == ''){
alert("Please enter username!");
return false;
}
if(password && password.value == ''){
alert("Please enter password!");
return false;
}
document.getElementById("hidden_username").value = username.value;
document.getElementById("hidden_password").value = password.value;
document.getElementById("HiddenLoginForm").submit();
}
//For enter event
function checkAndSubmit(e) {
if (e.keyCode == 13) {
validateAndLogin();
}
}
Run Code Online (Sandbox Code Playgroud)
祝好运!!!
不是真的 - 你唯一可以做的就是在网站上提供建议; 也许,在他们第一次登录之前,您可以向他们展示一个表单,其中包含的信息表明不建议他们允许浏览器存储密码.
然后,用户将立即按照建议,在便利贴上写下密码并将其粘贴到他们的监视器上.
小智 6
我一直在做的是使用javascript/jQuery自动完成="关闭"和清除密码字段的组合.
jQuery示例:
$(function() {
$('#PasswordEdit').attr("autocomplete", "off");
setTimeout('$("#PasswordEdit").val("");', 50);
});
Run Code Online (Sandbox Code Playgroud)
通过使用,setTimeout()您可以在清除之前等待浏览器完成该字段,否则浏览器将在您清除该字段后自动完成.