我打算让 Rails 项目的数据库可供公开下载。该数据库包含一个 Authlogic 用户表,其中包含 crypted_password 和 password_salt 字段。这些密码的存储安全性如何……以这种方式公开它们是否安全?或者我应该考虑实现另一个身份验证系统,例如不将密码存储在数据库中的 OpenID?
4 回答
无论安全和加密级别如何,分享它绝对不是一个好主意。即使它是完全安全的,至少你会泄露用户数据,这听起来不像是你的用户可能会高兴的事情。如果它不是完全安全的(更有可能)——假设,比如说,authlogic 中有一个尚未被发现的关键弱点呢?
安全总比后悔好。如果您愿意,可以分享其余部分,但请保密您的用户表和相关数据!
我建议您从您计划共享的任何数据库中删除任何涉及用户身份验证的字段(电子邮件、密码、盐和密钥、打开的 id url),否则当有人恶意掌握它时,您会发现自己陷入痛苦的世界。
我认为无论您使用何种身份验证系统,都不要将用户表包含在您公开的数据库中。使用 authlogic 的优点之一是您可以轻松地实现多种身份验证方法。无论您使用传统的注册、OAuth、OpenID 还是 RPX,所有这些方法都能够将密码之外的个人信息提取到您的用户模型中。用户可能也不会对公开出生日期/名字和姓氏/位置信息感到满意。
共享散列密码绝对不安全,也许您应该尝试将您的 User 模型拆分为 UserProfile(用户的公共信息 - 昵称、位置等)和 UserAccount 之类的东西,您可以将其用于身份验证。然后,您可能可以共享除帐户之外的所有内容。或者可能考虑实现某种 API,其他人可以使用该 API 从您的站点中提取数据,而不是发布整个数据库。