你应该如何将用户密码存储在Cloudant DB中?对于用户,我指的是使用Cloudant作为后端的应用程序的用户。如何安全地将用户密码存储在Cloudant DB中?
我搜索的文档,但我发现这个主题无关。 有一个_users数据库,在其中您可以创建用户并添加“密码”栏,但密码是一个普通的字段,数据库管理员(可能还有其他人)能读。
有没有办法将其隐藏或加密它内置的方式吗?
(后)为抢占“刚DIY”编辑答案
我得到一些“那是你的工作”的意见和答案是 - 在我看来 - 跑题了。请考虑一个现实检查,谁是像Cloudant这样的服务的目标受众,其入门门槛很低?懒惰的客户端开发人员喜欢我。投掷PBKDF2发电机并没有解决问题。突然,事情变得很多更加复杂,“公正”的安全功能。现实生活中会发生什么?密码将以纯文本形式存储,因为选择是:
A)您将应用程序的密码以纯文本形式存储在除了您(管理员)和其他未来的俄罗斯黑客都无法看到的地方
B),因为你忙于研究如何散列密码123456为他们写上后,它和电子邮件
送他们,如果你选择了B中的用户你不发货您的应用程序,这很好,但是你不是目标受众。
而且不管底层数据库,服务器必然已经有一些(好,跟上时代的,测试)散列功能的工作,因为它需要它管理员密码。所以这只是一个以某种形式向客户提供的问题。
编辑
我发现一块拼图,即加密用户密码CouchDB security feature。
由于CouchDB的1.2.0,在password_sha和盐字段 时自动创建一个密码字段是存在于用户 文件内。当用户文件被写入,CouchDB的检查的存在 密码字段,并且如果存在,它会产生一个 盐,哈希密码字段的值和散列密码散列和盐的级联 。然后它将生成的 密码写入password_sha字段,并将盐写入salt字段。 密码字段已删除。
这具有以下含义:客户不再需要 手动计算密码salt和散列值。好极了。
现在缺少了什么是潜在的DB的特征和Cloudant(只需设置password
领域的用户文档中不工作)之间的联系。
编辑2
研究发现,other question其类似于这一个 - 这是一个广泛的问题,但专门为网络应用。有来自@JasonSmith,解决我的问题一个公认的答案:
我可以使用CouchDB的安全功能
答案是“是的,你可以”
Cloudant还没有较新的CouchDB功能,其中服务器 将自动为你输入密码
但是CouchDB文档声明,这个特性包含在2013年的1.20版本中!那是一个“更新”的功能?
从文档中,我了解到Cloudant使用CouchDB 1.61。
总结一下:
- 该功能存在,
- 它的存在在Cloudant使用CouchDB的版本CouchDB的安全功能,
- Cloudant可以被配置为使用CouchDB的安全功能
所以......缺失的环节确实是真的小...
云是无关紧要的。你的问题是*如何安全地存储用户密码*期间。答案是密码学。 PBKDF2(基于密码的密钥派生函数2)https://en.wikipedia.org/wiki/PBKDF2 –
我不同意。 Cloudant是一项服务,而不仅仅是一个数据库。它可以(并且在我看来应该,因为它是一个基本功能)处理它(例如我目前使用的BaaS)。即使对于数据库,也可以存在“密码”字段类型。即使没有处理,它也可以提供一些实用程序。 – Ilya
祝你好运 –