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