2011-12-01 20 views
1

我正在開發一個.net Winforms應用程序,我需要保護連接到sql server 2008數據庫。我計劃創建一個web服務作爲中間層來處理認證並提供數據操作。還有更好的方法嗎? .net是否有組件或工具?最好的技術是什麼? 任何信息,將不勝感激,謝謝。.net winforms應用程序的安全連接

+0

當你說「安全」時,你想完成什麼?加密SQL連接? – vcsjones

+0

那麼我想讓數據庫無法訪問到每個人,因爲如果我在app.config中存儲連接字符串,那麼你可以很容易地連接到數據庫。正如Brian和KeithS提到的那樣WPF似乎可以處理它 – Lukas

回答

4

定義 「安全」。顯然你希望限制對真正需要這些數據的用戶的數據訪問。但是,需要更多關於架構的信息;這是一個內部應用程序,只能在(安全)局域網,VPN或託管環境中使用嗎?或者,這是一個應用程序,用於不受控制的計算機上,它將通過Internet傳輸數據?您需要多少安全性取決於使用該軟件的用戶類型,數據的來源以及數據的敏感程度。

MSS內置安全性非常好。您可以將SQL用戶綁定到Windows域帳戶,您可以根據用戶或角色等以多種方式限制「安全性」(表格,視圖,SP等)。我會首先查看這些功能,並認真考慮利用優勢他們在你的安全計劃中。一個SQL用戶定義爲供特定軟件的任何用戶使用,該用戶有權執行軟件可能需要的任何操作,但這些SQL用戶很簡單,常見而且非常不安全。

如果這還不夠好,或者你想完全抽象你的數據層(例如,如果你需要軟件能夠指向從MSS到Oracle到MySql的任何數據庫類型),那麼它可能是使用服務代理實現存儲庫模型是一個好主意。和Brian一樣,我鼓勵你看看WCF。 WCF服務是高度可配置的,並且可以提供獨立的身份驗證和加密。一個精心設計的WCF服務確實非常安全。

在服務的後面,您可以實現一個Repository模式,該模式抽象瞭如何從數據存儲中檢索數據的詳細信息,並公開了一些簡單方法,該方法以即用形式返回包含所需數據的對象。現在,您的服務方法只會將1:1映射到Repository方法,可能會對DataContract可序列化的對象進行一些轉換,而不是服務兩端可用的更豐富的域模型。

+0

Keith好點,你也可以使用其中的一些組合。例如,WCF可以將您的Windows憑據傳遞到數據庫,以檢查與Windows憑據綁定的帳戶。 –

+1

的確如此,但這開始變得多餘。使用Windows集成的SQL用戶需要登錄的用戶位於同一Windows域;這反過來通常需要在局域網內部或者VPN上,這兩者都應該被很好地保護以防止未經授權的訪問。在安全環境中添加另一層身份驗證和加密會降低性能,但不會增加任何安全性(如果您位於局域網內,則可以繞過WCF服務與Windows用戶或您的Windows用戶進入數據庫黑客攻擊)。 – KeithS

+0

確實如此,但是您可以將WCF服務託管在其他計算機上,使用白名單僅允許WCF計算機與數據庫通信,並且只允許WCF服務訪問數據庫,從而強制用戶使用WCF作爲通行證即使是最安全的環境/局域網也可以被分解;我們不知道他的安全要求是多麼偏執,或者是處理的數據類型。有時候,表現上的平衡值得到額外的0.01%的機會,有時候並非如此。 –

2

你看過使用WCF構建服務層嗎? WCF可以從實際的物理數據庫中引入一個全新的抽象和安全層。

WCF還允許您使用比傳統Web服務允許的更安全的綁定,並具有內置日誌功能。

而且,有時看看這本書,如果你想在.NET安全性真的很好看:

+0

不,我之前沒有使用過WCF,謝謝我會嘗試使用它 – Lukas

相關問題