如何对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会自动对加密内容进行解密。

  •      加密和解密在同一台计算机上使用

    在加密过程当中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,不然将不能解密。同时,在一台计算机上加密的配置,在另外一台计算机上将不能正常使用。

  •      中文路径问题

    该命令对中文支持不是很好。若是站点的路径中有中文字符,也许不能正常加解密。

相关文章
相关标签/搜索