2010-05-26 169 views
6

我目前正在開發與SQL Server數據庫後端一個C#應用程序。我正在接近部署點並遇到問題。應用程序將部署在活動目錄網絡中。至於SQL認證推移,我明白,我有兩個選擇 - 視窗Authenticaiton或服務器Authenticaiton。C#和SQL Server身份驗證

如果我使用服務器身份驗證,我擔心帳戶的用戶名和密碼將以純文本形式存儲在app.config文件中,因此會使數據庫易受攻擊。

使用Windows Authenticaiton可以避免此問題,但這意味着要讓我們組織內的所有員工都可以讀取/寫入數據庫訪問權限,以正確運行應用程序。雖然這是好的,它也意味着它們可以很容易地通過其它手段連接到數據庫自己和直接修改應用以外的數據。

我猜有成才真的很明顯我缺少在這裏,但我一直都晚上google搜索無果。任何意見/指導將非常感謝!

彼得


加法 - 我的項目是基於Windows窗體不是ASP.NET - 被加密app.config文件仍然是正確的答案?如果是,沒有任何人有沒有ASP.NET基於任何的例子嗎?

+0

這是一個winforms應用程序? – 2010-05-26 21:00:41

+0

是的,它是一個winforms應用程序 – Peter 2010-05-26 21:10:07

+1

更新了我的答案,並提供了一個指向如何加密保護的app.config(而不是web.config)文件的通用.NET示例鏈接 – 2010-05-26 21:19:27

回答

3

如果我使用服務器身份驗證,我是 ,有關該帳戶的用戶名和密碼爲 將 以純文本形式存儲在app.config中 文件,並因此離開數據庫 脆弱。

您可以隨時在app.config和encrypt that connection string section中創建連接字符串。這適用於ASP.NET以及控制檯應用程序,Winforms應用程序,WPF應用程序 - 這確實是一個.NET基礎技術。

請參閱Jon Galloway的Encryping Passwords in a .NET app.config瞭解如何執行此操作的非ASP.NET示例。

使用Windows Authenticaiton將 避免這個問題,但它會 意味着放棄我們的組織內讀取員工 的每一個成員/寫 訪問數據庫,以便正確地運行 應用程序。

是 - 但你可以減輕負擔:

  • 可以進行身份​​驗證的Windows/AD組 - 大家誰是該組的成員可以訪問 - 不需要單獨權限每個用戶

  • 如果你使用數據檢索和存儲過程的視圖進行插入/更新/刪除,你甚至不需要給這些用戶直接的表訪問,你可以屏蔽你的數據庫不適當的操縱

0

最簡單的辦法是存儲在web.config中的用戶名和密碼,然後encrypt them

+0

我正在閱讀的大多數文章似乎使用Web項目加密(ASP.NET),但我的項目是一個Windows窗體。是否可以應用相同的原則,還是有其他需要注意的地方? – Peter 2010-05-26 21:01:03

+0

@Peter Greenall:適用於任何.NET應用程序 - 我已將它用於控制檯應用程序,Winforms,ASP.NET - 它不僅限於ASP.NET,即使大多數示例都是ASP.NET – 2010-05-26 21:03:00

0

您可以隨時加密app.config中的數據。

這個link有更多信息。

相關問題