【发布时间】:2011-04-06 06:54:16
【问题描述】:
CouchDB 在允许将对象/行插入数据库之前提供验证。这可以确保如果您有一个面向公众的沙发应用程序,您的数据库不会被任何人填满垃圾。
User <-> CouchDB
但是,我想从您拥有trusted middle layer that does much of the auth work 的标准应用程序设计流程中弄清楚这是什么样的。例如,大多数应用程序将 Ruby 或 PHP 放在数据库和用户代理之间,这允许应用程序在允许将诸如帖子之类的内容保存到数据库之前找出有关用户代理的信息。
User -> Ruby -> MySQL
User <- Ruby <- MySQL
当用户无法被信任时,您如何信任用户执行管理任务?
例如,在仅使用 couchDB 插入用户行之前,您将如何执行“电子邮件验证”之类的操作?您不能让 用户代理插入行 - 因为它们会在系统中填满垃圾邮件帐户。另一方面,也没有中间层可以在他们单击电子邮件中的链接后插入行。
怎么样,我假设您将允许任何人通过在email_verify 等公共表中创建新记录来输入他们的电子邮件。这是公共用户代理可以做的事情,因为表在应用程序中不会做任何事情 - 它只是一个储水池。
然后 node.js 可以跟踪 _changes 提要并发送激活电子邮件,同时在私有表中创建新条目(如email_confirm)(node.js 将充当受信任的中间层)。如果用户单击该链接并返回然后... [未知] ... node.js 最终可以在私有用户表 (user) 中创建一条记录。
此时,我们可以依赖 couchdb 验证对应用程序的其余部分进行验证,因为我们创建了一个确认的用户帐户。
更多背景让我们想象一下基于 couchdb 的讨论,任何人都可以注册。我们不想让任何人在没有经过某种验证的情况下直接提交内容 - 但用户代理都直接运行系统。 (表格为Thread、Comment 和User)。这将如何运作?
【问题讨论】:
-
我不明白“表格”是什么意思?你说的是数据库吗?
标签: security nosql couchdb validation