【发布时间】:2011-05-30 03:14:37
【问题描述】:
我有一个用户表,其中包含所有用户详细信息,如姓名、电子邮件、密码哈希、性别、城市、教育等......总共大约 45 列。
问题是:我是否应该将其规范化为两个表,一个用于用户身份验证,即 user_id、email、password_hash、password_salt。
还有第二张表来保存用户详细信息,还是可以将两者都放在一张表中?我不能过多地规范用户详细信息,因为这是一个关键系统,性能非常重要,因此需要保持低连接。
我只是担心用于登录身份验证的用户密码/电子邮件是否应该放在单独的表中以提高安全性?
【问题讨论】:
-
单独的表如何“更好”安全?是什么让您认为“分离”==“更好”?你在什么地方读过这个吗?
-
"密码哈希" - 我想让你知道,作为互联网的普通用户,我很感激这一点。我经常在 SO 上看到与身份验证相关的问题,其中询问的人提供了演示纯文本密码存储的代码。你真的让我的下午变得如此明亮。谢谢。
-
不,不读它,但从现实世界的经验来看,你不会把你的超级秘密的东西和你的普通东西一起存储。它们分开存放。我的秘密文件会放在银行的储物柜里。我的个人文件可能在我家的保险箱里。所以我想打破表,然后看看还需要什么来保护身份验证表。
-
好吧纯文本存储的人不应该被允许做开发。对这些人应该有一个SO禁令。如今,安全和隐私非常重要,并且是每个系统都必须具备的。
-
“你不会把你的超级秘密的东西和你的普通东西一起存储”?为什么不?我仍然不明白你所做的区分。所有数据都是私有的。系统的所有部分都必须是安全的。为什么分离事物会使安全“更好”?如果没有真正的原因(只是与银行和家庭的模糊类比),为什么还要麻烦呢?所有计算机存储都必须同样安全。你有什么区别?我不明白。请解释一下。
标签: database authentication passwords schema