2010-02-27 51 views
2

我目前正在參與一個非常大的供應鏈管理軟件系統,內部就職於我的職位。系統的用戶界面目前僅通過ASP.NET實現,但我們也在開發Windows Forms和Windows Mobile Compact界面。我們在界面,業務和數據訪問層的分離方面擁有相當不錯的設置,所以我們已經在多個平臺上成功共享。但是,當我們將基於客戶端的接口分發給客戶時,我們有一些安全問題。正在尋找數據訪問層保護建議

我們的一些數據訪問庫隨可執行文件一起發佈。只需在記事本中打開已編譯的程序集,就可以查看其中的任何查詢。

例如,假設我們有一個名爲「用戶」誰實現方法「的GetName」作爲類:

從用戶選擇name其中id = @id

的問題是任何足夠強烈的人都可以在記事本中打開已編譯的程序集,現在可以看到列名和表名。當然,他們可能無法訪問這些內容,但如果我不需要,我還是寧願不公開這個模式。

以上只是一個簡單的例子。我是否正確地思考了思考過程,還是有辦法保護我們的疑問? (我寧願不訴諸使用存儲過程的一切。)

我想過迫使數據訪問層是遠程和通過Web服務從業務層進行通信,以便所有與數據庫相關的信息都在我們的內部服務器,我們可以更容易保護。

+0

使用存儲過程比這更有益處。對於一個如果你改變你的模式,因此不得不改變你的SQL查詢,你將不必對你的C#源代碼做任何事情。 Stored Procs還有其他幾個好處。 – awright18 2010-02-27 21:43:11

+0

它確實要求您的數據庫和存儲過程語言不會更改。但是我發現很難從一個數據庫供應商切換到另一個數據庫供應商。 – duffymo 2010-02-27 21:49:35

+0

從客戶端移動DAL並將其放在業務層後面有很多好處,通常稱爲n層開發。如果您需要對模式進行更改,則很容易做到,這意味着更新您的服務器,但如果意味着更新每個客戶端,則很困難。 – sipwiz 2010-02-27 21:56:03

回答

2

如果你想從src中刪除sql,那麼你正在尋找另一個像web服務的圖層。雖然這隱藏了您的SQL,但服務本身現在必須公開。所以,當那些偷看的人看不到數據庫模式時,他們仍然可以看到數據佈局。

Web服務允許的是更簡單的方式來進行模式更改,因爲現在您只需確保數據輸出始終相同即可。它還允許您移動,重命名和/或執行模式dbs的其他維護。最後,它最好允許你將數據庫連接集中在本地而不是通過網絡,並在服務器上運行更多的處理。

+0

這是我正在考慮的方法,需要某種憑證才能訪問Web服務。 – 2010-02-27 22:07:25

+0

證書是給定的,特別是對於任何更新數據庫的服務。只是因爲你的數據庫模式現在隱藏並不意味着你可以在記事本中查看有價值的信息。 – JDMX 2010-02-27 22:38:55