跳到密码字段中的空白选项是否存在安全风险?

信息安全 密码 IE浏览器
2021-08-28 14:02:49

使用Ctrl+ / ,在文本输入字段中从单词跳转到单词(或从空白跳转到空白)是跨不同操作系统的常见行为。

现在我发现这也适用于 Internet Explorer 8 和 11 中的密码字段(我还没有在其他版本上尝试过):实际文本被项目符号掩盖,但我可以使用提到键盘组合。

至少在 Chrome 38 中,组合只在整个文本的开头和结尾之间跳转。

  • 为什么这在 Internet Explorer 中没有修复?
  • 这可以被视为安全风险吗?仅在存储密码时才有意义;我想,这会使用外部工具打开更严重的攻击向量,例如从密码存储中读取密码,或使用解密工具。尽管如此,使用 Internet Explorer 的内置“功能”可以快速了解密码
  • 是否可以在运行时更改单词分隔符(空格?)?那么我可以将其更改为“a”,并使用箭头键跳转到每个“a”吗?
  • 如评论中所述,也可以跳转到特殊字符,例如$,尽管此处光标会在字符之前和之后停止。确切的“跳跃算法”是否记录在任何地方?
  • Internet Explorer 的描述行为是否还有其他问题?
4个回答

不,这不是安全风险。

在浏览器中存储密码是一种安全风险。让攻击者在您输入密码和提交密码之间访问您的计算机是一种安全风险(即使在您提交密码之后,您也需要担心有效会话 cookie 被盗)。能够在输入的密码中跳转到空白/特殊字符不是风险。

在密码字段中输入密码后,它在浏览器的 DOM 中,只需花费最少的精力就可以从中提取完整的值。例如,如果您转到开发人员的 javascript 控制台(例如,在 chrome/linux 中键入 Ctrl-Shift-J)并输入(您可以跳过以 开头的注释行//):

var inputs = document.getElementsByTagName('input');
// find all <input> elements in the page

for ( var i = 0; i < inputs.length; i++) {  
// loop through all <input> elements

    if (inputs[i].getAttribute('type') === 'password') {  
    // find input elements with attribute type="password"

        console.log(inputs[i].value);
        // print the values of these password elements to the screen.
    }
}

无论在任何密码字段中输入什么文本,它都会打印到屏幕上。(此代码等效于 jQuery $('input[type=password]').value,如果网页已加载 jQuery,它将起作用)。

您可以javascript:在地址栏中输入单词,然后粘贴

var inputs=document.getElementsByTagName('input'); for( var i=0; i < inputs.length; i++ ) { if (inputs[i].getAttribute('type') === 'password') alert(inputs[i].value) } 

进入地址栏,任何密码字段中的任何文本都会提醒您。(请注意,javascript:如果您尝试粘贴完整的 URL,大多数浏览器会删除该部分,因此您必须输入它。

javascript:var inputs=document.getElementsByTagName('input'); for( var i=0; i < inputs.length; i++ ) { if (inputs[i].getAttribute('type') === 'password') alert(inputs[i].value) }

是的,这是一个安全风险,但利用它的可能性很小。

可以这样利用:

  1. 有人在你不在的情况下使用你的电脑

  2. 有足够的时间打开IE

  3. 使用保存的密码连接到网站

  4. 获取您的密码配置文件并离开

如果入侵者有足够的时间完成上述所有操作,下载键盘记录器、安装它、授予防火墙上的所有权限、让防病毒软件忽略它并离开会更快、更简单。

因此,如果您正在考虑密码配置文件,则需要考虑更严重的问题。

密码不会显示在屏幕上以避免肩部冲浪攻击,但浏览器当然仍然知道密码。当您使用密码存储时,它会将实际密码提供给请求的应用程序,而不是它的哈希或加密版本(使用起来非常难以处理)。

如果某人离您足够近,他们可以使用您的键盘查看您是否输入了单词,那么他们就足够接近您的击键,并且您的密码的安全性已经受到损害。

安全风险?您正在泄漏数据,所以是的,这绝对是一个安全风险。

但风险是它发生的机会乘以影响。机会很低,因为您并非每天都在输入密码然后在登录前离开。影响也很低,因为仅显示字段的值(尤其是在浏览器中)通常要容易得多,即使没有,您'将只学习空白的位置。破解密码时仍然有很多选择。

那么这有关系吗?不,不是。