我正在浏览一个旧网站,在密码字段中添加autocomplete =“off”,确保它们经过哈希处理等等,以尝试提高安全性。
但是,如果用户在浏览器中选择了密码,如何停止存储密码。好像有人将他们的计算机解锁后,即使输入框上的autocomplete =“off”,由于用户名和密码已预先填写,他们也很容易进入管理员登录状态。
我以为我可以使用JavaScript来检查密码字段中是否存在值(例如,当浏览器填充它时),然后将其删除。但是要检查一个值,您需要将输入框的类型更改为“text”,然后将其更改回“password”后,浏览器会再次使用值填充这些框。
无论如何要阻止这一点,因为我认为这可能是那些使用相同密码等的人的安全漏洞,因为你可以将DOM元素更改为文本,以纯文本格式查看值,然后尝试在其他网站上的价值相同。
我试图使用的代码是
getEl = document.getElement的旧交叉浏览器功能 DOM =我自己的DOM加载函数
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());
});
是否存在任何方法或者用户是否聪明并且不在浏览器中存储密码等?显然,我正试图处理这些不安全的人,并强迫他们每次都重新输入密码。
谢谢!
答案 0 :(得分:0)
Chrome now ignore autocomplete=off
等浏览器。
用户是否存储密码完全取决于用户。如果他们这样做,他们应该在不在计算机时锁定桌面而不与他人共享他们的操作系统帐户。
你可以争辩说,关闭自动完成意味着用户要么选择一个非常简单的猜测密码,要么将它写在便利贴上并将其粘贴到键盘上。
答案 1 :(得分:0)
在您的"真实"之前加入隐藏密码字段密码字段:
<input type="password" style="display:none"/>
<input type="text" name="username"/>
<input type="password" name="password"/>
这有效!
答案 2 :(得分:0)
我的解决方案是:
type="password"
更改为type="text"
编写脚本,将该输入的类型从type="text"
更改为type="password"
假设输入为id="pwd"
。然后:
document.getElementById('pwd').setAttribute('type', 'password')
延迟调用此功能(因为如果你不这样做,大多数浏览器仍然会插入他们的缓存密码。当延迟时间> 1400时,我的浏览器会停止这样做):
setTimeout(
() => document.getElementById('pwd').setAttribute('type' 'password')
, 1500)