【问题标题】:Can JavaScript access autofilled passwords?JavaScript 可以访问自动填充密码吗?
【发布时间】:2015-12-01 17:25:30
【问题描述】:

JavaScript 可以访问自动填充的密码吗?这是否会带来安全风险?我知道存储的密码通常与域严格关联,但如果 Chrome 目前没有存储该域的密码,有时 Chrome 会建议其他网站的用户名和密码。

(我猜这可能因浏览器而异)

【问题讨论】:

  • 我从未见过 Chrome 为其他网站建议用户名或密码。只有其他字段。
  • 我想问题的范围可以扩大到包括地址建议隐私之类的内容。

标签: javascript security passwords autofill


【解决方案1】:

Chrome 在两种情况下自动填充详细信息:

  1. 当明确告知要记住特定网站的凭据时
  2. 当它看到字段时,它认为它可以自动填充并且用户接受建议的值(这些值不会是密码)

虽然这些字段可以通过 JavaScript 读取,但如果没有用户的明确指示,它们不会被填充。

这确实增加了风险级别,因为用户可能会不小心错误地确认数据,级别被认为是低的。

【讨论】:

  • 您的里程可能因其他浏览器而异。
【解决方案2】:

使用 javascript 在本地存储密码绝对是可能(并且可行)的。

这是因为 javascript 本身就是一种面向客户端的语言。

例如,如果您编写了一些 javascript 来更改输入字段的属性,使得“type='password'”改为“type=''”,那么密码将显示在用户浏览器上,没有阻塞 blob。

使用 javascript,您还可以获取密码字段提供的值,无论它是否被删除。

这并不是一个安全漏洞,因为它实际上只能在客户端机器上使用,并且现代浏览器中内置的各种技术在保护此类内容方面做得相当不错。

这也是最好跟上最新的安全软件和补丁的原因。

举个例子。如果您在用户提交密码之前使用类似于 localstorage.setitem() 的方法在他们的机器上存储密码,那么密码将以纯文本形式保留在他们的机器上。

但是,您也可以设计一个 Web 应用程序来通过 http 请求发送用户密码。

但是,在实践中,这很容易被用户查看,并且更有可能被多个来源标记(问题)。

【讨论】:

  • 如果网站上存在任何跨站点脚本漏洞 (XSS),则预先填充这些值的浏览器可以启用自动攻击来获取用户凭据并将其发送给攻击者。
  • 我不完全确定您的问题。但大多数浏览器都包含尝试阻止这些攻击的方法。但是,例如 cors,您将希望自己掌握它以更好地保护您的网站并在数据安全方面进行一些研究。
  • 我什么都没问。 ;) 浏览器 XSS 过滤器并非万无一失。我是说浏览器在 XSS 易受攻击的网站上预填密码是一个高风险漏洞。
猜你喜欢
  • 2023-01-10
  • 2019-09-02
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2018-12-10
  • 2019-04-05
  • 2010-11-29
  • 2019-02-22
相关资源
最近更新 更多