如何停止浏览器存储密码值

How to stop a browser storing password values

本文关键字:密码 存储 浏览器 何停止      更新时间:2023-09-26

我正在浏览一个旧网站,在密码字段上添加autocomplete="off",确保它们被散列等等,以尝试提高安全性。

但是,如果用户在浏览器中选择了密码,我如何阻止密码被存储?由于用户名和密码是预先填写的,即使输入框上有autocomplete="off",他们也可以很容易地进入管理员登录。

我想我可以使用JavaScript来检查密码字段中值的存在(例如,当浏览器填充它时),然后删除它。但是要检查一个值,你需要将输入框的类型更改为"text",一旦你将其更改为"password",浏览器将再次用值填充框。

是否有办法阻止这种情况,因为我认为这对于那些使用相同密码的人来说可能是一个安全漏洞,因为您可以将DOM元素更改为文本,以纯文本形式查看值,然后在其他网站上尝试相同的值。

我试图使用的代码是这样的

getEl = document.getElement的旧跨浏览器函数DOM = my own DOM on load function

function clearPSW()
{
    var p=getEl('strPassword');
    p.setAttribute("type","text");
    console.log("value is " + p.value);
    // if I exit here without changing back BOTH username and password fields
    // remain blank - although the PSW field is now a text field.
    //return;
    if(p.value!="")
    {
        console.log("clear");
        p = "";     
    }
    // as soon as I do this the browser re-fills the input boxes!
    p.setAttribute("type","password");
}
DOM(function(){
    console.log("run DOM");
    setTimeout(1000,clearPSW());
});

是否有任何方法或取决于用户是聪明的,而不是在浏览器中存储密码等?显然,我正试图处理这些不安全的人,迫使他们每次都重新输入密码。

谢谢!

Chrome等浏览器现在会忽略autocomplete=off

是否存储密码实际上取决于用户。如果他们这样做了,他们应该在不在电脑前锁定桌面,并且不要与他人共享他们的操作系统帐户。

你可能会争辩说,关闭自动完成意味着用户要么选择一个非常容易猜的密码,要么他们会把它写在便利贴上,然后贴在键盘上。

在"真实"密码字段之前包含一个隐藏密码字段:

<input type="password" style="display:none"/>
<input type="text" name="username"/>
<input type="password" name="password"/>

这工作!

我的解决方案是:

  1. 将HTML内的输入类型从type="password"更改为type="text"
  2. 编写脚本,将输入类型从type="text"更改为type="password"

    假设输入有id="pwd"。然后:

    document.getElementById('pwd').setAttribute('type', 'password')

  3. 设置调用此函数的延迟(因为如果不这样做,大多数浏览器仍然会插入缓存的密码)。当延迟> 1400时,我的浏览器停止这样做:

setTimeout( () => document.getElementById('pwd').setAttribute('type' 'password') , 1500)