2016-07-07 31 views
0

我正在開發Web服務,該服務將爲具有相同數據結構的單獨組織提供服務。我正在尋找更安全的方式來保持許多組織的數據分開並避免insecure direct object references實體框架中的用戶/組織上下文限制

我可以在接下來的方式實現:每個DB查詢

  1. 通行證用戶ID信息(得到這個用戶,檢查請求的資源與某些組織等的組織)。

  2. 爲每個組織創建單獨的數據庫實例,並在會話初始化期間提供特定組織的連接字符串。

第一種方式看起來有點無聊,需要額外關注每個請求。很容易錯過驗證,一些用戶可以通過在自己的請求中傳遞隨機ID來探索其他組織的數據。

第二種方式消除了關於額外過濾的所有問題。但我打算使用雲數據庫,每個新實例都需要額外付款,所以我想避免這種情況。

是否有可能以其他方式維護實體框架上下文?

+0

將組織ID作爲分區鍵存儲您的記錄。所以你可以用它來分類組織。 – Aravind

+1

根據您使用的SQL Server版本,查看行級安全性https://msdn.microsoft.com/en-us/library/dn765131.aspx,特別是使用EF的示例https://azure.microsoft.com/ en-us/documentation/articles/web-sites-dotnet-entity-framework-row-level-security/ – Macilquham

+0

@Macilquham你的評論是我的問題的答案。 RLS是我的項目的解決方案。 – RredCat

回答

0

在這個問題上不能明確地回答。您需要考慮許多因素,例如未來數據量,數據隱私級別,組織代表是否需要訪問數據庫,記住設計中的錯誤風險等。值得考慮的組織數量。如果少數組織例如3-5個,有時將數據放置在單獨的數據庫中是有意義的。 Azure允許您在沒有任何問題的情況下執行此操作,至少您不需要支付數據庫的數量。如果有許多組織和您的應用程序會有這種類型的SaaS,我會想,將數據放在單個數據庫中。這種實現不是很複雜。