html 将type=“password”更改为type=“text”的安全问题

sirbozc5  于 2022-12-25  发布在  其他
关注(0)|答案(6)|浏览(1343)

在客户端的html中,如果我们将type ="password"改为type ="text",密码在浏览器中显示为纯文本,这是否存在安全问题?如果是,该问题的解决方案是什么?
示例如下:

类型="密码"

类型="文本"

zzzyeukh

zzzyeukh1#

这涉及到两个相当不同的安全问题。
其中之一就是经常提到的使用input type=password的原因:保护用户不被窥探。这是很少相关的,因为密码通常是键入的(而且 * 应该 * 键入),这样就没有其他人看你的屏幕 * 或 * 你的手。
另一个是浏览器在历史记录中对input type=textinput type=password的不同处理,以及使用先前输入的数据作为默认值或可选选项。input type=text会导致自动预填充,如果数据已经输入到一个相同名称的字段中。使用autocomplete=off属性通常可以防止在现代浏览器中出现这种情况。另一方面,浏览器可以存储用户名/密码对,以使对站点的频繁访问更舒适;这可能是基本的可用性改进和基本的安全威胁。它通常基于识别一对input type=textinput type=password
您可以通过提供这两种选项来让用户做出决定,也许最不分散注意力的方法是在input type=password中设置一个复选框“键入时显示密码”,当然是由JavaScript驱动的,当选中时,type=password将变为type=text
一旦读取数据,input type=textinput type=password在处理数据方面没有区别。在这两种情况下,除非整个表单数据都加密,否则数据将以未加密的形式发送到服务器。

hmae6n7t

hmae6n7t2#

问题是,密码是以明文显示在屏幕上的。这让任何人都有机会看到密码。它通常是隐藏的,这样碰巧站在旁边的人就看不到输入的密码,即使附近有不太信任的人,也可以输入密码。

m1m5dgzv

m1m5dgzv3#

2017年这个问题很受欢迎,我认为非常重要。
从技术上讲,在处理数据方面没有区别,但password字段是不同分析插件/字典扩展/自动完成工具等不分析和跟踪此类字段的标志。例如,当您在文本字段中键入时,hotjar跟踪其内容并发送到其服务器,但当他们看到密码或信用类型编号时,他们会跳过发送。
当您的用户密码被发送给第三方公司时,是否存在安全问题?

t30tvxxf

t30tvxxf4#

将密码字段设置为类型文本没有这样的安全问题。这样做只是为了防止坐在你旁边的人或“物理”监视你以了解你的密码。

gg0vcinb

gg0vcinb5#

这是否存在安全问题?如果存在,如何解决此问题?
是的,存在安全问题。主要有两种类型:
1.肩部冲浪。
1.在浏览器或历史记录中保存密码。
对于类型1,用户需要是独立的并且更好地管理他的环境。
对于类型2,用户可以离开他的计算机,另一个用户可以基本上键入用户名,浏览器可以提示用户自动填写密码,你就通过了。
现在要关闭此安全设置。请关闭浏览器端的保存密码。浏览器将无法保存密码。因此,如果其他用户将密码从文本更改为密码,它也不会暴露给其他用户。
理想情况下,安全性应无自动填充功能。

uyhoqukh

uyhoqukh6#

从用户的Angular 来看,这是一个严重的安全缺陷

考虑以下情形:

Chrome浏览器或Safari浏览器会保存密码/用户名,并在您访问指定网站时自动填充。如果您在公共场所打开电脑,会发生什么情况?第三个人很容易泄露您的密码。
Macbook的钥匙链应用程序要求你输入电脑密码才能显示网络密码(safari密码),对吧?但是如果有人从你的电脑打开网站,然后导航到登录页面,密码和用户名/电子邮件就在那里了。如果你已经登录了,那么他们只需要先注销你,然后重新打开登录页面。然后;他们所要做的就是将输入类型从密码改为文本来显示你的密码。就是这样!

如果这不是一个安全漏洞,那么为什么MacBook Keychain Access应用程序要求您输入计算机的密码来显示互联网密码?它们基本上不是一回事吗?

您必须保护密码字段,防止通过开发工具更改其类型!
我创建了一个简单的javascript代码片段来保护密码输入,防止使用dev工具更改其类型(即:chrome开发工具)。请查看现场演示并测试它:

- https://codepen.io/mcakir/pen/zpZXxe
  • 注意:它是使用vanilla javascript编写的,因此不依赖于任何库(即:jQuery)*

相关问题