如何對web.config進行加密和解密

在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

  •      section表示要加密的配置節
  •      physical_directory用於指定站點的物理路徑。
  •      virtual_directory用戶指定虛擬路徑。
  •      provider指定加密提供程序。

    加密一個特定站點的鏈接字符串就是:
    aspnet_regiis.exe -pef "connectionStrings" "你的web項目路徑" -prov "DataProtectionConfigurationProvider"
    其中DataProctionConfiguartionProvider是Windows數據保護API(DPAPI)提供程序,它使用Windows內置的密碼學技術來加解密配置節。默認狀況下,這個提供程序使用本機的密鑰。
數據庫


2.    加密方法
安全

 

  運行Visual Studio 2008命令提示服務器

 

   

  加密後的結果app

  1.   <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">  
  2. <EncryptedData>  
  3.  <CipherData>    <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>  
  4.  </CipherData>  
  5. </EncryptedData>  
  6. lt;/connectionStrings>  


3.    解密 
   解密該鏈接字符串也很簡單
   aspnet_regiis.exe -pdf "connectionStrings" '你的web項目路徑"

ide

 

   解密後的結果:網站

  1. <connectionStrings>  
  2.     <add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />  
  3. </connectionStrings>  



4.    後臺代碼讀取配置文件web.config中數據庫鏈接字符串的方法:
 編碼

  1. using System.Configuation;  
  2. …  
  3. protected void Page_Load(object sender, EventArgs e)  
  4. {  
  5.     lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();  
  6.  }  
  7. …  


   運行效果圖: 

加密

 

 

5.    在鏈接字符串的加密和解密的過程當中,須要注意一下幾點。 

  •      使用加密的鏈接字符串

    使用加密的鏈接字符串不須要編碼解密,ASP.NET會自動對加密內容進行解密。

  •      加密和解密在同一臺計算機上使用

    在加密過程當中,使用了一個基於本機的密鑰。這就意味着加密和解密必須在同一臺計算機上進行,不然將不能解密。同時,在一臺計算機上加密的配置,在另外一臺計算機上將不能正常使用。

  •      中文路徑問題

    該命令對中文支持不是很好。若是站點的路徑中有中文字符,也許不能正常加解密。

相關文章
相關標籤/搜索