我们目前正在为我们拥有的网络应用程序存储纯文本密码.
我一直主张转移到密码哈希,但另一位开发人员表示这样不太安全 - 更多的密码可以匹配哈希,字典/哈希攻击会更快.
这个论点有什么道理吗?
绝对没有.但没关系.我之前发过类似的回复:
这是不幸的,但人们,甚至程序员,都太情绪化,不容易被争论所左右.一旦他投入了他的职位(如果你在这里发帖,他就是这样),你不可能仅凭事实来说服他.你需要做的是改变举证责任.你需要让他找出他希望能说服你的数据,这样才能了解真相.不幸的是,他有现状的好处,所以你在那里有一条艰难的道路.
来自维基百科
某些计算机系统存储用户密码,用于比较用户登录尝试,作为明文.如果攻击者获得对此类内部密码存储的访问权限,则所有密码等所有用户帐户都将受到攻击.如果某些用户对不同系统上的帐户使用相同的密码,那么这些密码也会受到损害.
更安全的系统以密码保护的形式存储每个密码,因此对于获得对系统的内部访问的窥探者来说仍然难以访问实际密码,同时仍然可以验证用户访问尝试.
常见的方法仅存储明文密码的"哈希"形式.当用户在这样的系统上键入密码时,密码处理软件通过加密散列算法运行,并且如果从用户的条目生成的散列值与存储在密码数据库中的散列匹配,则允许用户访问.通过将加密哈希函数应用于由提交的密码组成的字符串以及通常称为salt的另一个值来创建哈希值.salt可防止攻击者为常见密码构建哈希值列表.MD5和SHA1是经常使用的加密哈希函数.
您可以在该页面上阅读有关该主题的更多内容.在我看来,在我阅读和使用的所有内容中,散列是一个更好的场景,除非你使用一个非常小的(<256位)算法.
绝对没有理由在Web应用程序上保留纯文本密码.使用具有salt值的标准散列算法(SHA-1,而不是MD5!),因此无法进行彩虹攻击.