11
A
回答
22
是的,CouchDB可以防止未经授权的读取。不幸的是,它不那么简单。
想象一下秘密拍卖应用程序。你出价20美元,我出价10美元;每个出价在沙发文件。沙发让我们阅读我们自己的投标文件,但没有其他人。 但是,有一个显示平均值的map-reduce视图。我加载视图并查看平均值为15美元,因此我认为您的出价为20美元,并且我违反了安全策略。 视图输出可能泄漏部分或全部文档的信息。在文档级执行安全措施是不可行的。这就是读访问权限在数据库级别的原因。
我知道,它吮吸。但这是唯一正确的,可扩展的答案。
这是部分原因的沙发理念是为每个用户创建许多数据库—甚至一个(或多个)。对数据库的读取权限设置为数据库_security
对象的readers
值。 (请注意,现场readers was renamed to members CouchDB中主干,因为它也指定谁可以写入到数据库。)
该技术的工作原理是这样的:
- 为每个用户创建一个数据库。它将保存用户可能读取的所有文档。将用户(或用户的角色)添加到
_security
对象。 - 在master数据库中,创建一个实现读取策略的过滤函数。从主数据库到用户与
?filter=my_filter_function
数据库(这可能与validate_doc_update
共享代码。) - 复制。
- 允许用户加载(或复制)他们的数据库。
当然,这完全是为了一个纯粹的Couch应用程序,用户可以直接访问Couch。如果你有一个中间层(MVC控制器,或者只是一个反向HTTP代理),那么你可以在用户和沙发之间执行策略。但要小心。例如,_show
函数或_rewrite
规则可能允许用户加载视图或文档,而不考虑您的策略。
祝你好运!
相关问题
- 1. 防止未经授权的访问
- 2. 防止未经授权的代码
- 3. 防止未经授权的航线
- 4. 防止未经授权的CMS访问
- 5. 防止未经授权的软件
- 6. 防止未经授权使用组件
- 7. 如何防止未经授权的蜘蛛抓取
- 8. 防止未授权用户
- 9. ServiceStack - 防止对静态文件的未经授权的访问
- 10. 防止未经授权的访问使用jQuery的网页,javascript
- 11. 如何防止未经授权的HTTP请求?
- 12. 如何防止未经授权的电脑访问网站
- 13. 如何防止未经授权的浏览内容(php/js)
- 14. MVC6防止未经授权的重定向
- 15. MVC 4 OAuth - 如何防止未经授权的用户?
- 16. WCF - 防止未经授权的客户端
- 17. Node.js安全性:防止未经授权的更改
- 18. 保护微星以防止未经授权的使用
- 19. Drupal阻止未经授权的访问
- 20. 如何防止未经授权使用网站内容?
- 21. 防止未经授权重新部署PHP应用程序
- 22. 如何防止未经授权访问媒体流
- 23. 未经授权禁止用户信息
- 24. Android Kiosk模式 - 防止用户“未经授权”取消固定应用程序
- 25. Maven错误:未经授权,ReasonPhrase:未经授权
- 26. LinqToTwitter的OAuth未经授权
- 27. 未经授权的指纹
- 28. 未经授权的蓝邮
- 29. 随机未经授权的错误
- 30. Xively:获取数据时未经授权
谢谢!您能否详细说明_show和_rewrite如何咬我?此外,我如何避免竞争状况,如“不友好的人 - >上传照片”,并且100%确信这位不受邀请的人永远看不到那张照片? – nornagon
那么,假设你有一个反向代理,它允许/拒绝每个用户根据URL访问每个文档。稍后,您使用_list函数添加新功能,并且代理允许所有_list查询。用户可能会想出如何使用_list来查看他不应该看到的文档。同样,一个_rewrite规则可以提供一种方法来查看没有正常的'/ db/doc_id'路径的文档。所以你必须非常确信你的代理没有漏洞。 – JasonSmith
你的第二个问题更多的是关于**取消**读取权限而不是**授予**读取权限。我建议你问一个新问题(“如何撤销CouchDB安全模型中的读取访问权限”)。如果可以的话,我会尽快答复! – JasonSmith