在数据库中存储密码的最佳方法

在数据库中存储密码的最佳方法

我正在开发一个必须具有身份验证(用户名和密码)的项目

它还连接到数据库,所以我想我会在那里存储用户名和密码。但是,将密码仅仅放在数据库中的表中的文本字段似乎不是一个好主意。

我正在使用C#并连接到2008 Express服务器。任何人都可以(尽可能多的例子)建议存储此类数据的最佳方法是什么?

PS我很乐意这样的想法,如果可以提供一个很好的理由,这些信息不会存储在数据库中


跃然一笑
浏览 4527回答 4
4回答

慕的地6264312

你是正确的,将密码存储在纯文本字段是一个可怕的想法。但是,就位置而言,对于您将要遇到的大多数情况(我真的想不出任何反例)在数据库中存储密码的表示是正确的做法。通过表示我的意思是你想要使用salt(对每个用户应该是不同的)和一个安全的单向算法来存储密码并存储它,丢弃原始密码。然后,当您要验证密码时,您将对该值进行散列(使用相同的散列算法和salt)并将其与数据库中的散列值进行比较。所以,虽然你正在思考这个并且这是一个好问题,但这实际上是这些问题的重复(至少):如何最好地存储用户信息和用户登录名和密码存储数据库密码的最佳实践保存密码:最佳实践?在php变量或php常量中以明文形式存储密码是否可以?为了进一步澄清盐渍位,简单地对密码进行哈希处理并存储的危险是,如果侵入者获得了数据库,他们仍然可以使用所谓的彩虹表来“解密”密码(至少显示在彩虹表中的那些)。为了解决这个问题,开发人员为密码添加了一个盐,如果做得好,使彩虹攻击变得不可行。请注意,一个常见的误解是简单地为所有密码添加相同的唯一和长字符串; 虽然这并不可怕,但最好为每个密码添加独特的盐。阅读本文了解更多。

神不在的星期二

作为密钥加强的盐渍哈希,使用安全算法,如sha-512。

撒科打诨

最好的安全做法是根本不存储密码(甚至不加密),而是存储加密密码的盐渍哈希(每个密码使用唯一的盐)。这样(实际上)无法检索明文密码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL