Ubi*_*Che 4 security passwords hash login
我遇到了一个公司正在使用的系统,我们正在考虑与中型(对我们而不是他们)项目合作.
他们有一个我们需要集成的Web服务.
我目前对正确的用户名/密码管理的理解是用户名可以作为明文存储在数据库中.每个用户都应该有一个唯一的伪随机盐,它也可以以明文形式存储.他们的密码文本必须与salt连接,然后这个组合的字符串可以被散列并存储在nvarchar字段的数据库中.只要密码通过SSL提交到网站(或网络服务),一切都应该是可爱的.
如果我错了,请随意撕掉我上面总结的理解.
无论如何,回到手头的主题.此潜在合作伙伴运行的WebService不接受我预期的用户名和密码.相反,它接受两个名为"Username"和"PasswordHash"的字符串字段.我给出的'PasswordHash'值确实看起来像一个哈希值,而不仅仅是一个错误命名的密码字段的值.
这给我带来了一面红旗.我不知道为什么,但出于某种原因,我觉得在电线上发送哈希密码感到很不舒服.在我的脑海中,我无法想到为什么这会是一件坏事...从技术上讲,无论如何都可以在数据库中使用哈希.但它让我感到紧张,我不确定是否有这个原因,或者我只是偏执狂.
编辑
在我重新阅读我的帖子之前,我对下面的一些评论感到困惑.
在原文中,我有一句"只要密码通过明文提交到网站(或网络服务),一切都应该是可爱的."
我发誓,因为我以为我在想"SSL"这个词.出于某种原因,我输入了"明文"这个词.哇.
最差的.错字.永远.
egl*_*ius 11
使用散列密码将其发送到服务没有任何价值,因为您仍然需要一个单独的机制来保护通信,即SSL
如果系统接受散列密码,则出于所有目的和目的,散列密码是密码.如果攻击者获得了哈希密码,他可以访问该帐户而无需找出原始密码.
上述所有问题的一个重要问题是,如果数据库遭到入侵并且攻击者获得了哈希密码,则意味着通过所述WebService即时访问所有帐户,因为就WebService而言,这些已经是密码.
我真的建议你把它带给他们并谈谈它.这可能是某些开发人员所做的事情之一,并没有得到关注/优先考虑.