我最近登录了一个网站。当我点击“更新配置文件”页面时,将显示所有用户字段的文本框列表,例如名称,电子邮件,电话号码等。

还有一个用于输入密码和确认密码的框(如果您希望更新这些值),但是,当您进入此页面时,这些框已经

进入检查元素时,它们实际上具有您的密码值,并转换成大写形式,如下所示:

<input type="password" name="txtPassword2" size="45" value="MYPASSAPPEARSHERE">


我最近还注意到,登录时密码或用户名的大小写无关紧要-例如我可以将其全部大写,全部降低或混合使用,它仍然会接受密码。

这是一个安全漏洞,这是否表示密码将密码存储为纯文本? br />
这不是(有关存储纯文本密码的网站的处理方法)的重复,我在这里要求澄清这是否表明该网站正在存储纯文本密码,而不是该怎么做它。


公司的响应:经过努力,公司承认实际上是密码,以纯文本格式存储。

评论

您可能需要检查一下:plaintextoffenders.com

有了这种安全概念,人们几乎想知道为什么他们不愿意添加type =“ password”属性

您确定密码字段已预先发送给您,而不是由密码管理器或浏览器填充吗?

@zovits如果是这种情况,则在检查元素时,密码将不会显示在value属性下。

这是什么网站,所以我们都可以确保永远不要使用它?

#1 楼

很明显,如果他们可以显示您的密码,那么他们以某种方式存储了您的密码。他们可能会在您登录时在客户端缓存您的密码(出于不合理的原因,例如会话管理),但是他们的密码数据库很可能是明文形式的。无论哪种方式,它都将被存储,而不应该被存储。

看起来他们正在对密码运行upper()函数,该函数从潜在的字符集中清除了26个字符,否则它们会增加一些熵。

这方面的安全性非常差,而且已经有20多年了。

评论


虽然这很可能是一种可能性,但我们不知道密码是未加密存储的。它们可以使用可逆加密进行存储。仍然很糟糕,但并不那么令人发指。

–烧烤
19年5月23日在21:11

@barbecue eek-解密密码并将其发送回客户端吗?这增加了一个全新的层面

– schroeder♦
19年5月23日在21:12

@barbecue就像纯文本一样糟糕...

–路加公园
19年5月23日在21:14

@Mark我认为这不是一个明智的选择,因为它删除了密码通用域的很大一部分(从62 ^ n到36 ^ n),这大大减少了破解密码所需的时间(即使是随机密码也可以)。从每个字符的6位熵到采用这种方案的5位)。在我看来,这样的事情吸引了应该学习使用密码管理并降低过程中其他所有人安全性的人们。

–柠檬掉落
19年5月23日在23:38

@LemonDrop,Mark不仅不好,因为它降低了密码复杂性(至少对于安全意识较高的用户而言),而且可能更重要的是,它欺骗了用户,使他们认为自己的密码比他们更安全。他们至少可以做的是让用户清楚密码不区分大小写

–DreamConspiracy
19年5月24日在1:21

#2 楼

纯文本密码是一个巨大的安全问题。


首先,他们甚至不知道该密码。密码应散列和加盐。任何不这样做的人都会受到[编辑的审查]。第二,在并非绝对必要的情况下,通过有线方式发送密码是第二大安全错误。
这时,将其包括在网页中仅会增加对侮辱的伤害。

与之相比,他们扔掉案子是无害的。实际上,可以在安全性和可用性之间进行合理的权衡。也可能是他们使用的某些古老的后端系统不支持大写/小写。我已经在大型机上看到了。应该写一个密码不区分大小写的地方,但是老实说,与前三个警告相比,这个值得一提。

评论


任何不这样做的人都是白痴。夸大其词?在某些情况下,高安全性并不那么重要。例如,Mailman邮件列表管理器以纯文本格式存储并发送回密码,并清楚地表明这种行为,明确告诉人们不要使用有价值的密码。如果用户密码被盗,罪犯所能做的就是从邮件列表中取消订阅。尽管设计存疑,但Mailman的白痴设计师是不是?

– Gerrit
19年5月24日在7:44

@gerrit是的。自从安全哈希函数的发明以来,使用纯文本密码的技术原因为零,对于合理的“安全”值来说,安全哈希函数的发明至少可以追溯到1989年(MD2哈希函数;我没有详尽地检查其他过时的代码)那些)。当然,您今天不应该使用MD2甚至SHA-256之类的东西,但是安全哈希函数的一大优点是它们可以互换并且易于升级。最糟糕的是,您需要扩大数据库字段。

– CBHacking
19年5月24日在7:52

@gerrit“白痴”是轻描淡写的。即使您的系统是可以想象到的最低安全性,我们也知道用户跨站点重复使用密码。您不仅在威胁自己的站点,而且在威胁许多其他站点。尤其是在您的站点安全性较低的情况下,因为那样的话,它很可能没有那么多的安全控制措施。

–汤姆
19年5月24日在10:45

@CBHacking对于Mailmans来说,我应该留意到从Mailman 3开始,密码显然是散列存储的,不再以明文形式存储。

– Gerrit
19年5月24日在10:56

@IEatBagels这是绝大多数人。

–汤姆
19年5月24日在17:54

#3 楼

老实说,我们不知道。

他们可以将密码存储为纯文本格式,可以将其加密存储。两者都将是灾难性的。当您登录时,他们可以将其存储在会话中(即服务器端),这虽然不会造成太大的灾难,但仍然很糟糕。他们甚至可以让您将其存储在Cookie(即客户端)中,然后让显示用户个人资料的脚本将其插入表单,这仍然很糟糕。

无论如何,没有充分的理由,理智的理由,或者实际上我可以想象为什么会需要的任何理由,或者甚至是不必要地且比绝对必要的时间都长的密码。或者,为什么要采用这种形式。

您藏有秘密的东西的时间越长,无论安全与否,“某物”发生的可能性和不存在秘密的可能性就越高。

所以...无论是什么,通常都不是一个好的模式。我们无法确定它到底有多严重。

密码大写也是一样。我们不知道他们在做什么。他们可能会认为每个密码都是大写的,这很不好,因为它使蛮力攻击的效率大约提高一倍。尽管考虑到可能存储纯文本密码,但这还是可以忽略的。在线暴力攻击不太可能并且很容易受到挫败,而离线攻击很可能……如果密码是纯文本的……您知道。到那个时候,谁在乎。

他们可能只是将该形式的大写字母使用了,所以在更改密码时,任何“超级聪明”的Javascript代码段都会告诉您“那太相似了”。我们不知道但是再说一次,不管用什么,都不好。

评论


“它使暴力攻击的效率大约提高了两倍”-更糟!它从密码的每个字符中删除最多1位熵,即10个字符的密码将丢失10位,因此搜索空间将减少2 ^ 10 = 1024。

– JimmyB
19年5月24日在11:01



实际上,我可以想到为什么他们要使用这种形式的密码。他们的后端是惰性的,并且可以保留整个对象,而无需处理该对象就可以对数据库进行处理。如果我知道它是哪个网站,那将使我想尝试的攻击变得更加复杂。

–汤姆
19年5月24日在11:38