在WEB網站開發過程當中,若是咱們將數據庫鏈接字符串封裝到.DLL文件中,將會給數據庫和程序的遷移帶來麻煩,由於萬一服務器地址或者數據庫發生變動,那麼咱們就不得不修改源程序並從新將其編譯。更好的解決方法是將數據庫鏈接字符串寫入到web.config配置文件中,可問題是將鏈接字符串寫入到web.config文件中以後,任何人都能打開看到所鏈接的數據庫名和密碼,又會帶來安全隱患,所以爲了保證數據庫的安全性,咱們能夠經過使用微軟IDE自帶的命令aspnet_regiis.exe將配置文件web.config中指定的標籤進行加密,若是之後想查看加密後的鏈接字符串,咱們還可使用aspnet_regiis.exe將加密後的字符串進行解密。html
1. 加密通用語法
加密一個特定網站的web.config文件的通用形式
aspnet_regiis.exe -pef secion physical_directory -prov provider
或
aspnet_regiis.exe -pe secion -app virtual_directory -prov provider
其中,各個參數的含義以下:
web
加密一個特定站點的鏈接字符串就是:
aspnet_regiis.exe -pef "connectionStrings" "你的web項目路徑" -prov "DataProtectionConfigurationProvider"
其中DataProctionConfiguartionProvider是Windows數據保護API(DPAPI)提供程序,它使用Windows內置的密碼學技術來加解密配置節。默認狀況下,這個提供程序使用本機的密鑰。數據庫
2. 加密方法安全
運行Visual Studio 2008命令提示服務器
加密後的結果app
3. 解密
解密該鏈接字符串也很簡單
aspnet_regiis.exe -pdf "connectionStrings" '你的web項目路徑"
ide
解密後的結果:網站
4. 後臺代碼讀取配置文件web.config中數據庫鏈接字符串的方法: 編碼
運行效果圖:
加密
5. 在鏈接字符串的加密和解密的過程當中,須要注意一下幾點。
使用加密的鏈接字符串不須要編碼解密,ASP.NET會自動對加密內容進行解密。
在加密過程當中,使用了一個基於本機的密鑰。這就意味着加密和解密必須在同一臺計算機上進行,不然將不能解密。同時,在一臺計算機上加密的配置,在另外一臺計算機上將不能正常使用。
該命令對中文支持不是很好。若是站點的路徑中有中文字符,也許不能正常加解密。