配置文件,這個再平常不過了。不管你用的服務器,還是開發時用到的各種開發工具,還有我們自己開發的網站/軟件,配置文件都是很重要的。今天說的就是.net環境下的配置問題。
先來段程序,以connectionString為例:
web.config中初始的配置:
<connectionStrings> <add name="TestConnStr" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Readers;Persist Security Info=True;User ID=test;Password=123456" providerName="System.Data.SqlClient" /> </connectionStrings>
加密代碼:
Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); ConnectionStringsSection section = config.ConnectionStrings; if (!section.SectionInformation.IsProtected && !section.SectionInformation.IsLocked) { section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider"); config.Save(ConfigurationSaveMode.Full, false); }
看一下加密的結果:
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider"> <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>Rsa Key</KeyName> </KeyInfo> <CipherData> <CipherValue>Y1QD6G00t8+X3Igfth3ElX3eA/zVxVOEnQjiFLH6l7c3LQWIRe9hZV4J77QfN+7T9pzcMgaIDm8Ck5C5R9FsDaV5AzfdfT3SluDib9exZhOoZUY3IQq+S8sxf0SjzFZLw4lgfG/DPkvo6KkMAYgl/J4lsXeAg16Q0XViiOTqcI0=</CipherValue> </CipherData> </EncryptedKey> </KeyInfo> <CipherData> <CipherValue>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</CipherValue> </CipherData> </EncryptedData> </connectionStrings>
這樣的代碼,估計沒幾個人能看懂吧,哈哈。我們的程序還可以原始的方式調用,解密過程.net在你取值時自動完成。
注意:如果在vs是運行,要以管理員身份運行vs;如果在IIS中,IIS的用戶一定要獲得配置文件的改寫權限。
下面看一個加密的代碼:
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
OpenWebConfiguration方法,它有個6個重載的方法,上面用的是最簡單的一個,就是打開當前網站根目錄下的配置文件,下面看一下最復雜的一個:
public static Configuration OpenWebConfiguration( string path, string site, string locationSubPath, string server, string userName, string password )
參數:
- path
-
類型:System.String
配置文件的虛擬路徑。
- site
-
類型:System.String
顯示在 Internet 信息服務 (IIS) 配置中的應用程序網站的名稱。
- locationSubPath
-
類型:System.String
配置應用的特定資源。
- server
-
類型:System.String
Web 應用程序所在的服務器的網絡名稱。
- userName
-
類型:System.String
打開文件時要使用的用戶全名 (Domain\User)。
- password
-
類型:System.String
用戶名的密碼。
返回值
類型:System.Configuration.Configuration
一個 Configuration 對象。
我們可以看到這個方法提供了一上相當強大的功能,它能讓你打開遠程服務器的某個配置文件。打開之后我們就可以對任何的配置節進行修改、加密等的操作,真是一個強大的功能。
然后下一句
ConnectionStringsSection section = config.ConnectionStrings;
獲取你要操作的配置節,這里獲取ConnectionStrings的配置。
然后
if (!section.SectionInformation.IsProtected && !section.SectionInformation.IsLocked)
我們判斷這個配置節是不是已經加密並且是不是已經鎖定。
然后
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
這一句完成加密,看一下ProtectSection方法:
public void ProtectSection( string protectionProvider )
參數
- protectionProvider
-
類型:System.String
要使用的保護提供程序的名稱。
.net提供兩種保護提供程序:
DPAPIProtectedConfigurationProvider:使用 Windows 數據保護 API (DPAPI) 對數據進行加密和解密,使用的是內建到window的保護機制,用的是機器特定的密鑰加密,優點是不用自己維護管理密鑰,缺點就是不能在多個機器上使用同一個密鑰配置。
RSAProtectedConfigurationProvider:使用 RSA 加密算法對數據進行加密和解密。
關於rsa密鑰的問題,在machine.config中我們可以找到這段:
<configProtectedData defaultProvider="RsaProtectedConfigurationProvider">
<providers>
<add name="RsaProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="NetFrameworkConfigurationKey" cspProviderName="" useMachineContainer="true" useOAEP="false"/>
<add name="DataProtectionConfigurationProvider" type="System.Configuration.DpapiProtectedConfigurationProvider,System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" description="Uses CryptProtectData and CryptUnProtectData Windows APIs to encrypt and decrypt" useMachineProtection="true" keyEntropy=""/>
</providers>
</configProtectedData>
默認使用的 RSA 密鑰容器名為 "NetFrameworkConfigurationKey"。
創建和導出 RSA 密鑰容器,請參考:http://msdn.microsoft.com/zh-cn/library/2w117ede(v=vs.100).aspx
如果計划在多台服務器(Web 場)上使用相同的加密配置文件,則只有通過 RsaProtectedConfigurationProvider 才能導出加密密鑰,並將其導入其他服務器。
當然我們還可以通過繼承 System.Configuration.ProtectedConfigurationProvider 抽象類來實現自己的加密程序。
注意:如果使用 Nothing 參數或空字符串調用 ProtectSection 方法,則 RSAProtectedConfigurationProvider 類將用作保護提供程序。
最后,保存。
config.Save(ConfigurationSaveMode.Full, false);
.net提供三個重載的save方法,最復雜的一個是:
public void Save( ConfigurationSaveMode saveMode, bool forceSaveAll )
參數:
- saveMode
-
類型:System.Configuration.ConfigurationSaveMode
一個 ConfigurationSaveMode 值,該值用於確定要保存的屬性值。 - 有三個值:
- Full : 將所有屬性都寫出到配置文件。這在創建信息配置文件時或將配置值從一台計算機移動到另一台計算機時最有用。
-
Minimal:僅將不同於繼承值的屬性寫出到配置文件。
-
Modified:僅將修改的屬性寫出到配置文件,即使值和繼承值相同。
- forceSaveAll
-
類型:System.Boolean
如果在未修改配置的情況下保存配置,則為 true;否則,為 false。
另外還提供一個SaveAs的方法,可以讓我們把配置節中的配置寫入到指定的配置文件中。
OK,通過這些節配置的api我們完全可以把配置的管理自動化、簡易化,提高我們的效率。
還有更值得注意的問題是配置節的修改會導致創建新的應用程序域,去應用新配置,新的請求就要等到應用程序域創建完畢,並且請求頁面重新編譯為本機代碼之后才會得到處理,更糟糕的是,application和cache的信息將丟失,如果使用的是進程內會話提供程序,session也將丟失。因此,我們不應該把經常變化的值保存到web.config這樣的配置文件中,並且盡量避免修改這些配置文件。