在客户端的html中。如果我们将 type="password" 更改为 type="text",则密码在浏览器中显示为纯文本。这有什么安全问题吗?如果是,这个问题的解决方案是什么?
示例如下:
类型="密码"
类型=“文本”
涉及两个相当不同的安全问题。
其中之一是经常提到的使用input type=password
: 的原因,以保护用户免受窥探。这很少相关,因为通常输入密码(并且应该输入),因此没有其他人在看您的屏幕或您的手。
另一种是浏览器在其历史中和在使用以前输入的数据作为默认值或可选选项时对浏览器的不同input type=text
处理input type=password
。这因浏览器而异,但input type=text
如果以前在同名字段中输入了数据,通常会导致自动预填充。在现代浏览器中使用该autocomplete=off
属性通常可以防止这种情况。另一方面,浏览器可能会存储用户名/密码对,以使频繁访问网站更加舒适;这可能是重要的可用性改进和重要的安全威胁。它通常基于识别一对input type=text
和input type=password
。
您可以通过提供这两个选项将决定留给用户。也许最不分散注意力的方法是input type=password
使用复选框“键入时显示密码”,当然是 JavaScript 驱动的,选中时会type=password
变成type=text
.
input type=text
和之间没有区别input type=password
。在处理数据时,一旦数据被读取。在这两种情况下,数据都将以未加密的形式发送到服务器,除非整个表单数据都已加密。
好吧,问题是密码以明文形式显示在屏幕上。这让任何肩上冲浪的人都有机会看到密码。它通常是隐藏的,因此恰好站在周围的人看不到正在输入的密码,即使附近不太受信任的人也可以输入密码。
2017 年在这里,这个问题很受欢迎,我认为非常重要。
从技术上讲,处理数据没有区别,但password
字段是不同分析插件/字典扩展/自动完成工具等不分析和跟踪这些字段的标志。例如,当您输入文本字段时,会hotjar
跟踪其内容并发送到他们的服务器,但当他们看到密码或信用类型编号时会跳过发送。
当您的用户密码被发送给第三方公司时,是否存在任何安全问题?
将密码字段设置为文本类型不存在这样的安全问题。这样做只是为了防止有人坐在您旁边或“物理地”监视您以了解您的密码。
从用户的角度来看,这是一个严重的安全漏洞
考虑这种情况:
Chrome 或 Safari 会保存密码/用户名,并在您访问指定网站时自动填写。如果您将计算机放在公共场所打开怎么办?第三个人很容易泄露您的密码。
Macbook 的钥匙串应用程序要求您输入计算机密码才能显示互联网密码(safari 密码),对吗?但是,如果有人从您的计算机打开该网站并导航到登录页面,则密码和用户名/电子邮件就在那里。如果您已经登录,那么他们只需要先注销您并重新打开登录页面。然后; 他们所要做的就是将输入类型从密码更改为文本以显示您的密码。而已!
如果这不是安全漏洞,那为什么 Macbook Keychain Access App 要求您输入计算机密码才能显示互联网密码?它们基本上不是一回事吗?
您必须保护密码字段不通过开发工具更改其类型!
我创建了一个简单的 javascript 片段来保护密码输入不使用开发工具(即:chrome 开发工具)更改其类型。查看现场演示并进行测试:
- https://codepen.io/mcakir/pen/zpZXxe
注意:它是使用 vanilla javascript 编写的,因此它不依赖于任何库(即:jQuery)