2010-12-23 162 views
1

我有一个用户表,其中包含所有用户的详细信息,如名称,电子邮件,密码哈希,性别,城市,教育等...总共约45列。用户详细信息表中的用户认证详细信息或单独?

现在的问题是:我应该将此标准化为两个用于用户认证的表格,即user_id,email,password_hash,password_salt。

第二个表用来存放用户的详细信息,还是可以同时存在于一个表中?由于这是一个关键系统,性能非常重要,因此我不能将用户细节标准化太多,所以需要保持低连接。

我只是担心,如果用户密码/电子邮件用于登录身份验证应该在一个单独的表为更好的安全性或不是?

+0

单独表格“更好”的安全性如何?是什么让你觉得“分开”==“更好”?你有没有读过这个地方? – 2010-12-23 19:17:20

回答

0

Symfony的sfGuard使用两个表:一个用于验证数据,另一个用于用户详细信息。这看起来相当明智 - 因为这将两组不同的数据彼此分开,并且用户认证表很窄,因此它更适合于内存(和各种缓存),并且不需要与(更广泛的)用户详细信息一起操作无论何时需要认证。

至于安全性,我并没有真正看到一个表与两个表的区别,除了备份存储需求。

与往常一样,衡量并比较这种情况如何在您的特定情况下累积起来。

1

除非这些表格以非常不同的方式实现,否则两个表格本身不会为一个表格提供额外的安全性。比如说,他们被分区到不同的硬件,密码表有本地磁盘加密或类似的东西。即便如此,我们正在谈论不同形式的“安全”。两张桌子都还在使用中,只有在休息时才加密。 (可能还有其他的例子,但这就是我现在能想到的。)

就我个人而言,我倾向于使用两张表格,而不是从安全的角度来看,而是从关注点分离的角度来看。一个是身份验证,一个是用户配置文件。在绝大多数情况下,他们不需要分开,但我更愿意将它们分开,以防需要逻辑更改而需要将它们分开时,因为逻辑上它们不是同一件事。