用户帐户设计和安全性

时间:2010-05-29 18:36:33

标签: ruby-on-rails security database-design ruby-on-rails-3

在开始之前,我使用Ruby on Rails和Devise gem进行用户身份验证。

嗨,我正在做一些关于帐户安全性的研究,我发现了一篇关于该主题的博客帖子,但我再也找不到了。我读到了一些关于制作登录系统的内容,你应该有一个用户模型,其中包含用户的用户名,加密密码和电子邮件。您还应该拥有用户帐户的模型。这包含其他一切。用户拥有帐户。

我不知道我是否正确解释这个问题,因为我几个月没有看到这篇博文,而且我丢失了我的书签。

有人可以解释我应该或不应该这样做的原因和原因。我的申请涉及金钱,所以我需要用安全保障我的基地。

感谢。

2 个答案:

答案 0 :(得分:3)

使用不同的模型来处理User(处理基本身份验证的模型)和Account(包含用户可以执行的操作的所有信息的模型,如何, ...)可以给你一些加号:

  1. 使用暴露更高安全级别的辅助存储系统存储用户数据
  2. 限制用户对其他应用程序工件(模型,控制器等)的数据访问
  3. 使代码审查和安全审计更容易
  4. 我倾向于向用户模型添加个人信息(真实姓名,电话号码......),同时在帐户模型中公开有关用户的操作数据(昵称,生物......)。

答案 1 :(得分:1)

嗯,将这些模型分开是一个很好的架构决策,因为它们指的是不同的实体:用户模型属于auth系统而帐户模型属于用户档案管理系统。但这一切都取决于。如果你的模型非常小(比如每个3-5个字段),你可能无法从这种分离中获得任何好处,但是额外的头痛。但是,如果你的模型很大,比如说用户模型会更频繁地使用 - 那么你应该考虑为了清晰度和性能原因而努力实现不同的模型。