database - 在数据库中存储密码的最佳方式

标签 database security passwords

<分区>

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

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

我正在使用 C# 并连接到 2008 Express 服务器。谁能建议(尽可能多地举例)存储此类数据的最佳方式是什么?

P.S 如果可以提供充分的理由,我可以接受不将此信息存储在数据库中的想法

最佳答案

您说得对,将密码存储在纯文本字段中是一个可怕的想法。然而,就位置而言,对于您将遇到的大多数情况(老实说,我想不出任何反例)存储表示在数据库中输入密码是正确的做法。通过表示,我的意思是您想要使用盐(每个用户应该不同)和安全的单向算法对密码进行哈希处理并存储那个,丢弃原始密码。然后,当您想要验证密码时,您对该值进行哈希处理(使用相同的哈希算法和盐)并将其与数据库中的哈希值进行比较。

因此,虽然您正在考虑这个问题是一件好事,这是一个很好的问题,但这实际上是这些问题的重复(至少):

为了进一步澄清加盐位,简单地散列密码并存储它的危险在于,如果侵入者获得了您的数据库,他们仍然可以使用所谓的 rainbow tables。能够“解密”密码(至少是那些出现在彩虹表中的密码)。为了解决这个问题,开发人员添加了一个 salt密码,如果处理得当,彩虹攻击根本无法实现。请注意,一个常见的误解是简单地向所有密码添加相同的唯一且长的字符串;虽然这并不可怕,但最好为每个密码添加唯一的盐。 Read this for more.

关于database - 在数据库中存储密码的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54531902/

相关文章:

python - 能够检查数据库连接主机或名称(不是数据库名称而是设置)? Django

java - com.mongodb.MongoTimeoutException : Timed out after 10000 ms while waiting to connect

javascript - 如何在 AJAX 中高效地编写 "toggle database value"函数?

php - 用于 PHP 的 OAuth 2.0 服务器

java - 表列名称 - NetBeans IDE

JavaScript 安全性 - 外部人员对 DOM 的访问

http - 如何保护公网IP设备的web登录

security - 密码哈希 - 如何升级?

java - 密码输入规则

java - 如何使用 JAVA 或任何脚本定期自动更改 mysql 密码?