在政府医疗机构工作的乐趣之一是必须处理所有围绕PHI(受保护的健康信息)的偏执。不要误解我的意思,我支持尽一切可能保护人们的个人信息(健康状况、财务状况、上网习惯等),但有时人们会有点太神经质了。
举个例子:我们的一位州客户最近发现浏览器提供了保存密码的方便功能。我们都知道它已经存在了一段时间,完全是可选的,由最终用户决定是否使用它是一个明智的决定。然而,目前有一点骚动,我们被要求找到一种方法来禁用我们网站的功能。
问:网站有没有办法告诉浏览器不要提供记住密码的功能?我从事网络开发已经很长时间了,但我不知道我以前遇到过这种情况。
任何帮助都是感激的。
解决这个问题最简单的方法是将INPUT字段放在FORM标记之外,并在FORM标记内部添加两个隐藏字段。然后在提交事件侦听器中,在表单数据提交到服务器之前,将值从可见输入复制到不可见输入。
下面是一个例子(你不能在这里运行它,因为表单动作没有设置为一个真正的登录脚本):
<!doctype html>
<html>
<head>
<title>Login & Save password test</title>
<meta charset="utf-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
<!-- the following fields will show on page, but are not part of the form -->
<input class="username" type="text" placeholder="Username" />
<input class="password" type="password" placeholder="Password" />
<form id="loginForm" action="login.aspx" method="post">
<!-- thw following two fields are part of the form, but are not visible -->
<input name="username" id="username" type="hidden" />
<input name="password" id="password" type="hidden" />
<!-- standard submit button -->
<button type="submit">Login</button>
</form>
<script>
// attache a event listener which will get called just before the form data is sent to server
$('form').submit(function(ev) {
console.log('xxx');
// read the value from the visible INPUT and save it to invisible one
// ... so that it gets sent to the server
$('#username').val($('.username').val());
$('#password').val($('.password').val());
});
</script>
</body>
</html>
我测试了很多解决方案。动态密码字段名,多个密码字段(假密码不可见),更改输入类型从“text”到“password”,autocomplete=“off”,autocomplete=“new-password”,…但是最近的浏览器没有解决这个问题。
为了摆脱密码记忆,我最后把密码当作输入字段,并“模糊”输入的文本。
它不如本地密码字段“安全”,因为选择键入的文本会显示为明文,但密码不会被记住。它还依赖于激活Javascript。
你将不得不估计使用下面的建议和密码记住选项导航的风险。
虽然密码记忆可以由用户管理(每个站点取消),但它适用于个人计算机,不适用于“公共”或共享计算机。
我的案例是一个在共享计算机上运行的ERP,所以我将在下面尝试我的解决方案。
<input style="background-color: rgb(239, 179, 196); color: black; text-shadow: none;" name="password" size="10" maxlength="30" onfocus="this.value='';this.style.color='black'; this.style.textShadow='none';" onkeypress="this.style.color='transparent'; this.style.textShadow='1px 1px 6px green';" autocomplete="off" type="text">
除了
autocomplete="off"
使用
readonly onfocus="this.removeAttribute('readonly');"
对于您不希望他们记住的输入表单数据(用户名,密码等),如下所示:
<input type="text" name="UserName" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" >
<input type="password" name="Password" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" >
在最新版本的主流浏览器(如谷歌Chrome, Mozilla Firefox, Microsoft Edge等)上进行了测试,效果非常好。