【发布时间】:2010-04-30 06:41:38
【问题描述】:
我遇到了一家公司正在使用的系统,我们正在考虑与该公司合作开展一个中型(对我们而言,而不是他们)项目。
他们有一个我们需要与之集成的网络服务。
我目前对正确的用户名/密码管理的理解是用户名可以以明文形式存储在数据库中。每个用户都应该有一个唯一的伪随机盐,它也可以以明文形式存储。他们的密码文本必须与盐连接,然后这个组合字符串可以被散列并存储在数据库中的 nvarchar 字段中。只要通过 SSL 将密码提交到网站(或网络服务),一切都应该是美好的。
如果我错了,请随意撕毁我上面总结的理解。
无论如何,回到手头的主题。这个潜在合作伙伴运行的 WebService 不接受用户名和密码,这是我所预料的。相反,它接受两个名为“用户名”和“密码哈希”的字符串字段。我得到的“PasswordHash”值确实看起来像一个哈希,而不仅仅是一个错误命名的密码字段的值。
这对我来说是一个危险信号。我不知道为什么,但出于某种原因,我对通过网络发送散列密码感到不舒服。在我的脑海中,我想不出为什么这会是一件坏事的原因......从技术上讲,哈希无论如何都可以在数据库中使用。但这让我很紧张,我不确定这是有原因还是我只是偏执。
编辑
在我重新阅读我的帖子之前,我被下面的一些 cmets 弄糊涂了。
在原文中,我有一句话“只要通过纯文本向网站(或网络服务)提交密码,一切都应该是美好的。”
我发誓,因为我认为我在考虑“SSL”这个词。出于某种原因,我输入了“纯文本”这个词。哇。
最糟糕的。错字。永远。
【问题讨论】:
标签: security hash login passwords