我目前正在參與一個非常大的供應鏈管理軟件系統,內部就職於我的職位。系統的用戶界面目前僅通過ASP.NET實現,但我們也在開發Windows Forms和Windows Mobile Compact界面。我們在界面,業務和數據訪問層的分離方面擁有相當不錯的設置,所以我們已經在多個平臺上成功共享。但是,當我們將基於客戶端的接口分發給客戶時,我們有一些安全問題。正在尋找數據訪問層保護建議
我們的一些數據訪問庫隨可執行文件一起發佈。只需在記事本中打開已編譯的程序集,就可以查看其中的任何查詢。
例如,假設我們有一個名爲「用戶」誰實現方法「的GetName」作爲類:
從用戶選擇name其中id = @id
的問題是任何足夠強烈的人都可以在記事本中打開已編譯的程序集,現在可以看到列名和表名。當然,他們可能無法訪問這些內容,但如果我不需要,我還是寧願不公開這個模式。
以上只是一個簡單的例子。我是否正確地思考了思考過程,還是有辦法保護我們的疑問? (我寧願不訴諸使用存儲過程的一切。)
我想過迫使數據訪問層是遠程和通過Web服務從業務層進行通信,以便所有與數據庫相關的信息都在我們的內部服務器,我們可以更容易保護。
使用存儲過程比這更有益處。對於一個如果你改變你的模式,因此不得不改變你的SQL查詢,你將不必對你的C#源代碼做任何事情。 Stored Procs還有其他幾個好處。 – awright18 2010-02-27 21:43:11
它確實要求您的數據庫和存儲過程語言不會更改。但是我發現很難從一個數據庫供應商切換到另一個數據庫供應商。 – duffymo 2010-02-27 21:49:35
從客戶端移動DAL並將其放在業務層後面有很多好處,通常稱爲n層開發。如果您需要對模式進行更改,則很容易做到,這意味着更新您的服務器,但如果意味着更新每個客戶端,則很困難。 – sipwiz 2010-02-27 21:56:03