gpt4 book ai didi

security - CouchDB - 弄清楚数据库的安全性

转载 作者:行者123 更新时间:2023-12-04 15:15:20 25 4
gpt4 key购买 nike

CouchDB 在允许将对象/行插入数据库之前提供验证。这确保如果您有一个面向公众的沙发应用程序,您的数据库不会被任何人填满垃圾。

User <-> CouchDB

但是,我试图从标准应用程序设计流程中找出 trusted middle layer that does much of the auth work 的情况。 .例如,大多数应用程序将 Ruby 或 PHP 放置在数据库和用户代理之间,这允许应用程序在允许将诸如帖子之类的内容保存到数据库之前找出有关用户代理的信息。
User -> Ruby -> MySQL
User <- Ruby <- MySQL

当用户不可信时,您如何信任用户执行管理任务?

例如,在仅使用 couchDB 插入用户行之前,您将如何执行“电子邮件验证”之类的操作?您不能让用户代理插入该行 - 因为他们会用垃圾邮件帐户填充系统。另一方面,也没有中间层可以在他们单击电子邮件中的链接后插入行。

怎么样,我假设您将允许任何人通过在公共(public)表(如 email_verify)中创建新记录来输入他们的电子邮件。 .这是公共(public)用户代理可以做的事情,因为表在应用程序中不会做任何事情 - 它只是一个储 jar 。

然后 node.js 可以跟踪 _changes 提要并发送激活电子邮件,同时在私有(private)表中创建新条目(如 email_confirm )(node.js 将充当受信任的中间层)。如果用户单击该链接并返回然后... [未知] ... node.js 最终可以在私有(private)用户表( user)中创建一条记录。

在这一点上,我们可以依赖 couchdb 验证应用程序的其余部分,因为我们已经创建了一个确认的用户帐户。

随着更多的背景让我们想象一个任何人都可以注册的基于 couchdb 的讨论。我们不想让任何人在没有经过某种验证的情况下直接提交内容——但用户代理都直接运行系统。 (表将是 ThreadCommentUser )。这将如何工作?

最佳答案

我会考虑在这个问题上为现有用户添加角色。

使用 couchdb 的验证和更改 _design/_auth添加 email 可能是个好主意, email_verified并随机生成email_verification_code_users用户首次注册时的数据库。

要发送邮件、获得确认、重新发送确认,您可以使用外部流程。 (有关外部进程的示例用法,您可以查看 couchdb-lucene)。

最后,如果验证码匹配,您可以再次在用户更新过程中快速检查 _design/_auth 并添加 verified_user该用户的角色。

这样,您的所有请求都将通过 couchdb,仅当您需要发送邮件并获得确认时才使用外部进程。

编辑:忘记添加(因为它很明显),我会添加verified_user 角色到数据库阅读器。

关于security - CouchDB - 弄清楚数据库的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com