我正在考虑在网站上模拟一些较新的浏览器中可用的“显示密码”功能,本质上是作为不支持的浏览器的 polyfill。执行此操作的常用方法是调用一个 JavaScript 函数,该函数在和之间切换输入类型password
text
,但鉴于它是密码数据,我对此持谨慎态度。
在输入中放置明文密码是否会
text
导致密码被恶意插件抓取的风险?password
具体来说,除了使用点的视觉混淆之外,现代浏览器是否围绕 -type 输入实施任何安全机制?上述链接是否反映了此类功能的当前行业最佳实践?
我正在考虑在网站上模拟一些较新的浏览器中可用的“显示密码”功能,本质上是作为不支持的浏览器的 polyfill。执行此操作的常用方法是调用一个 JavaScript 函数,该函数在和之间切换输入类型password
text
,但鉴于它是密码数据,我对此持谨慎态度。
在输入中放置明文密码是否会text
导致密码被恶意插件抓取的风险?
password
具体来说,除了使用点的视觉混淆之外,现代浏览器是否围绕 -type 输入实施任何安全机制?
上述链接是否反映了此类功能的当前行业最佳实践?
在文本输入中放置明文密码是否存在密码被恶意插件抓取的风险?
恶意插件可以抓取任何表单数据、包含的密码字段,甚至在写入之前将其记录下来。所以改变类型在这里没有区别。
一般来说,试图防御恶意浏览器插件是没有意义的。如果您的用户有一个,那么游戏就结束了。
具体来说,除了使用点的视觉混淆之外,现代浏览器是否围绕密码类型输入实施任何安全机制?
默认情况下,密码字段已关闭自动完成功能。为防止浏览器保存密码并在以后作为建议泄露密码,您必须确保autocomplete="off"
在输入字段上明确设置。这应该处理键入时的建议和自动填充以前的状态,例如使用后退按钮时。
可能有一些较旧的浏览器会忽略autocomplete="off"
- 谁知道,浏览器曾经做过各种愚蠢的事情 - 但我怀疑这是一个很大的比例。不过,可能是个问题。
密码字段的存在使一些浏览器更积极地警告未加密的连接。因此,使用文本字段可能会使警告静音,这很糟糕。但是,如果您将 TLS 与 HSTS 一起使用,那应该不是问题。
此外,它可能会与密码管理器(内置浏览器和外部浏览器)混淆。但这更多的是可用性而不是安全问题。
上述链接是否反映了此类功能的当前行业最佳实践?
除了自动完成问题之外,我认为只要您对肩部冲浪的固有风险没问题,我认为这会很好。不过,谁知道我忽略了什么。
既然你说“行业最佳实践”,我不得不提一下,像这样直接操作 DOM 已经不是通常的做法了,但这与安全性无关。
不过说实话,我不得不承认我不是这个功能的忠实粉丝。感觉有点hacky。除非您有非常具体的理由,否则我建议您不要实施它。不过,这更多是基于我的直觉(以及对非必要功能的普遍厌恶),而不是其他任何事情。
到目前为止,最大的威胁是自动完成功能。确保浏览器没有将密码保存在自动完成历史记录中。