我观看了 DEFCON,它完全致力于 NoSQL,尤其是 CouchDB。他们观察到一些攻击向量,例如访问客户端库(伪 SQL 透明层)、访问 db 和暴力密钥。(以无模式方式)、json/视图注入。如果我直接从 Internet 访问 db,并在 db 验证、身份验证中使用。这样会不会降低我的数据库的安全性?
不幸的是,由于缺乏使用 CouchDB 的经验,因此无法进行准确的分析,亲爱的同事,请相信您的意见。
谢谢你。
我观看了 DEFCON,它完全致力于 NoSQL,尤其是 CouchDB。他们观察到一些攻击向量,例如访问客户端库(伪 SQL 透明层)、访问 db 和暴力密钥。(以无模式方式)、json/视图注入。如果我直接从 Internet 访问 db,并在 db 验证、身份验证中使用。这样会不会降低我的数据库的安全性?
不幸的是,由于缺乏使用 CouchDB 的经验,因此无法进行准确的分析,亲爱的同事,请相信您的意见。
谢谢你。
不,我不会这样做。
我觉得 CouchDB 的安全性不够精细,不足以使其适合发布在互联网上。没有办法让“一些”数据通过,而不是全部。在普通的 SQL DB 上,您可以限制某些表等。但不能在 Couch 中。作为无模式和文档存储,文档就是文档就是文档,无论它是“秘密”还是“重要”。
这是一个很好的后端,但不是在狂野的互联网上。
直接访问任何基于 Web 的数据库都是自找麻烦,但我想这取决于您的设计......
使用 CouchDB,您可以选择为每个用户提供他们自己的数据库,这将缓解某些问题。您还可以更改“直接”CouchDB 用户的读/写权限。
可以在此处找到这两种技术的详细说明: 基于每个数据库的 CouchDB 授权
在我看来,任何人都可以直接将 couchDB 与您的前端一起使用,而无需设计中间后端服务。我想强调你至少需要做的事情。虽然我不是专家,但也应该三思而后行。
所以,我想,如果用户只能读写自己的文档,那是安全的。但是,您必须自己在数据库中创建此类用户,或者使用安全 API 来使用管理员密码修改设计文档并添加到 _users 数据库。另一个想法是创建一个管理仪表板来接受用户创建请求。您当然可以为自己创建一个管理员用户,每当有人创建帐户时,您只需单击“允许”即可使用您在 couchDB 中创建的管理员用户对 _users 数据库进行一些更改。