我加入了一家基本上銷售一個網絡應用程序的小公司。 Web應用程序中的數據非常敏感,所有數據都是現場級加密的。應用程序使用ASP.NET Web API 2(C#)編寫,並帶有html/javascript front和SQL-Server。爲多個客戶組合數據庫 - 好主意?
目前,他們有大約50個客戶端,而應用程序的體系結構是每個客戶端都有自己的數據庫。它們都被部署到它們自己的IIS虛擬目錄中,然後指向它自己的DB。代碼在所有客戶端中完全相同。
業主告訴我,這是全部由安全設計。然而,這是一個絕對痛苦的管理,他們只能得到更多的客戶。
我建議將它全部組合到一個數據庫中,然後在主表上添加一個字段來標識數據屬於哪個客戶端。從這裏我可以過濾/加入該領域。
業主不喜歡這樣做,因爲它引入了一個風險:如果存在劣質代碼,一個客戶端可能能夠看到另一個客戶端數據。這顯然不能在多個數據庫中發生,因爲連接字符串不會跨越到不同的數據庫。
有沒有任何可能的方法來解決這個問題?我建議覆蓋授權類來阻止未經授權的用戶訪問信息,但這並不能解決整個「錯誤代碼」問題。
有什麼我可以做的,還是我堅持維護一大堆數據庫?
單獨的數據庫還有助於與雲中的數據庫即服務進行隔離。自動化也是這個世界的關鍵。 –
連接字符串是從虛擬目錄派生的,因爲數據庫名稱(初始目錄)與虛擬目錄中使用的相同。我們嘗試儘可能自動化(使用Web部署,更新等進行部署),但當出現問題時仍然很痛苦,目前我們只有50個客戶端,無法想象它是在500還是5000) – user3129594