[英]Store the ConnectionString
嗨,我想找到最好的方式(或一個好的方法)來存儲一個ConnectionString(我的應用程序將連接到服務器中的數據庫,它將連續使用它)以及如何處理管理員帳戶。 默認情況下,所有登錄的應用程序都必須有管理員帳戶,對吧?
我想那樣......
那么,你在機器上安裝一個應用程序,你將如何配置ConnectionString? 我認為如果不理解它是什么或它真的必須要求用戶配置這樣的東西是錯誤的?
並且想象有一天ConnectionString必須因任何原因而被更改,如果登錄應用程序的Admin acoount憑據在服務器的表中,那么如何登錄應用程序來更改ConnectionString?
現在這是我的問題......我不知道如何處理這類事情,如果有任何規則來處理這個,任何常見的方式,因為我開始更認真地對待這類事情。
注意:我認為這並不重要,但我的應用程序正在WPF中開發。
使用MS SQL Server進行數據庫訪問安全性的一種非常簡單的方法是使用“Integrated Security = SSPI”。 這樣,MS SQL服務器就運行數據庫訪問進程的Windows用戶實體進行身份驗證。 這一切都在無需使用MS SQL Windows身份驗證的情況下進行,無需在應用程序中存儲任何用戶名或密碼。
另一種方法是分發一個配置文件,其中包含數據庫連接字符串,至少加密了密碼。
我們在幾台服務器上也有很多MySQL數據庫,因此MS SQL SSPI不能覆蓋我們。
對於服務器端軟件,我將數據庫連接字符串和憑證存儲在所有服務器端軟件使用的單獨XML配置文件中。 憑證是局部排列的,所有數據庫信息都是加密的。 我為所有服務器進程使用通用文件,並開發了一個小的加密/數據庫配置文件管理GUI,因此簡化了管理,並且使用相同代碼的所有軟件都可以訪問。
對於最終用戶軟件,由於用戶維護,使用本地配置文件進行維護非常困難。 對於“胖客戶端”軟件,我在我們的DMZ中的服務器上維護一個帶有加密憑據的單獨數據庫,任何人都可以使用該軟件(沒有那么多分布式胖客戶端軟件)。我們的Web應用程序軟件具有統一的用戶數據庫。它控制所有應用程序的所有用戶/角色的訪問權限,並且所有內容都通過一個系統進行移植,因此更容易保留用戶數據庫。
坦率地說,多語言系統越來越難以維護。 我會使用我們的主域LDAP服務器(Windows ADS),但是我們的公司策略會使所有域成員服務器完全防火,從我們最信任的VPN外部訪問,因此在很多情況下無法訪問。
我希望有一天能有時間在我們的DMZ中設置基於* nix的LDAP服務器並集中所有憑據信息。
使用連接字符串到MS SQL服務器,您基本上有兩個選項:
Integrated Security=True
連接字符串中為Integrated Security=True
。 這假設您配置了數據庫,以便批准的用戶可以訪問它。 無論哪種方式,您的連接字符串都應該與應用程序的其余部分捆綁在一起。 如果您需要更改它,您只需發布一個新版本。 (這適用於最原始的安裝版本:“將這一堆文件復制到計算機上的目錄中”)。
現在,連接字符串幾乎可以存儲在任何地方,最方便的地方可能是應用程序設置文件 。
如果您希望確定您的用戶只能使用應用程序提供的功能而不直接訪問數據庫,則必須編寫類似Web服務的內容並僅通過它間接連接到數據庫。
如果需要將連接字符串存儲在配置文件或您選擇的其他位置,則可能需要對加密結果進行加密和編碼,然后將其編碼回字符串。 在此處檢查Encrypt()和Decrypt()實現。
在安裝應用程序期間可以操作文件(例如.config文件)。 因此,可以向用戶/管理員(在安裝過程中)詢問服務器的名稱(即使是用戶名和密碼,只要你加密這些,但我寧願使用集成安全性)。
要更新連接字符串,只需創建一個新的安裝程序。
替代方法:將連接字符串存儲在活動目錄或其他知名商店中,這樣您只需在一個位置更改值即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.