在政府医疗机构工作的乐趣之一是必须处理所有围绕PHI(受保护的健康信息)的偏执。不要误解我的意思,我支持尽一切可能保护人们的个人信息(健康状况、财务状况、上网习惯等),但有时人们会有点太神经质了。

举个例子:我们的一位州客户最近发现浏览器提供了保存密码的方便功能。我们都知道它已经存在了一段时间,完全是可选的,由最终用户决定是否使用它是一个明智的决定。然而,目前有一点骚动,我们被要求找到一种方法来禁用我们网站的功能。

问:网站有没有办法告诉浏览器不要提供记住密码的功能?我从事网络开发已经很长时间了,但我不知道我以前遇到过这种情况。

任何帮助都是感激的。


当前回答

其实不是——你唯一能做的就是在网站上提供建议;也许,在他们第一次登录之前,您可以向他们展示一个表单,其中的信息表明不建议他们允许浏览器存储密码。

然后,用户将立即按照建议,在便利贴上写下密码,并将其粘贴在显示器上。

其他回答

您可以通过在每个显示中随机为密码字段使用的名称来防止浏览器匹配表单。然后浏览器看到与url相同的密码,但不能确定这是相同的密码。也许它在控制其他东西。

更新:注意,这应该是使用自动补全或其他策略的补充,而不是替代它们,因为其他人指出的原因。

还要注意,这只会阻止浏览器自动完成密码。它不会阻止它以浏览器选择使用的任意安全级别存储密码。

另一种解决方案是使用隐藏表单使POST,其中所有输入的类型都是隐藏的。可见表单将使用“password”类型的输入。后一种表单永远不会被提交,所以浏览器根本无法拦截登录操作。

我测试了很多解决方案。动态密码字段名,多个密码字段(假密码不可见),更改输入类型从“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"对密码字段不起作用,所以必须依赖javascript。这里有一个简单的解决方案,基于这里找到的答案。

添加属性data-password-autocomplete="off"到你的密码字段:

<input type="password" data-password-autocomplete="off">

包括以下JS:

$(function(){
    $('[data-password-autocomplete="off"]').each(function() {
        $(this).prop('type', 'text');
        $('<input type="password"/>').hide().insertBefore(this);
        $(this).focus(function() {
            $(this).prop('type', 'password');
        });
    });     
});

这个解决方案适用于Chrome和FF。

autocomplete="off"适用于大多数现代浏览器,但我使用的另一种方法是在Epiphany(一种支持webkit的GNOME浏览器)中成功工作,即在会话状态中存储一个随机生成的前缀(或一个隐藏字段,我碰巧在会话状态中已经有一个合适的变量),并使用它来更改字段的名称。Epiphany仍然想要保存密码,但当返回到表单时,它不会填充字段。