web.config的话题 [加密和解密]
 为什么要对web.config进行加密?
为什么要对web.config进行加密? 先谈为什么?原因其实就是基于安全方面的考虑
    先谈为什么?原因其实就是基于安全方面的考虑 简单的说,在asp.net中,加密web.config可以有效的保证数据库用户和密码安全,以及其他重要配置信息的安全。
    简单的说,在asp.net中,加密web.config可以有效的保证数据库用户和密码安全,以及其他重要配置信息的安全。 复杂的说,在asp.net中,可以使用受保护配置来加密web.config中的敏感信息(如用户名,密码,数据库连接字符串和加密密钥,etc)
    复杂的说,在asp.net中,可以使用受保护配置来加密web.config中的敏感信息(如用户名,密码,数据库连接字符串和加密密钥,etc) 对配置信息进行加密后,即使功击都获取了对配置文件的访问,也可以使功击者难以获取对敏感信息的访问,从而改进应用程序的安全性。
              对配置信息进行加密后,即使功击都获取了对配置文件的访问,也可以使功击者难以获取对敏感信息的访问,从而改进应用程序的安全性。 如何加密web.config呢?
如何加密web.config呢? (以下只是演示,具体项目具体操作)
(以下只是演示,具体项目具体操作) 1.    新建一个website或者webapplication project (E:\Enconfig\WebApplication1)
1.    新建一个website或者webapplication project (E:\Enconfig\WebApplication1) 2.    在web.config中新增一个
2.    在web.config中新增一个 <connectionStrings>
<connectionStrings> <add name="SqlServices" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
    <add name="SqlServices" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" /> </connectionStrings>
</connectionStrings> 3.    针对connectionStrings进行加密,如下:
3.    针对connectionStrings进行加密,如下: 使用命令行工具regaspnet_iis
使用命令行工具regaspnet_iis (有关于Framework的版本号是自行选定的,我们这里选择v2.0.50727这个文件夹)
(有关于Framework的版本号是自行选定的,我们这里选择v2.0.50727这个文件夹) Cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
Cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 Aspnet_regiis -pe "connectionStrings" -app "/EnConfig/WebApplication1"
Aspnet_regiis -pe "connectionStrings" -app "/EnConfig/WebApplication1" 这里如果直接执行的话,会报错的,错误信息如下:
这里如果直接执行的话,会报错的,错误信息如下: Encrypting configuration section
Encrypting configuration section
 A configuration file cannot be created for the requested Configuration object.
A configuration file cannot be created for the requested Configuration object. Failed!
Failed! 那怎么解决呢,也是很简单
那怎么解决呢,也是很简单 只需要把E:\Enconfig的这个文件夹的属性设置一下web共享即可。
只需要把E:\Enconfig的这个文件夹的属性设置一下web共享即可。 具体见图:(图1)
具体见图:(图1) 这样的话,对web.config中的ConectionString就加密好了
这样的话,对web.config中的ConectionString就加密好了
 那如何解密呢?
那如何解密呢? *其实ASP.NET 在处理 Web.config 文件时会自动对该文件的内容进行解密。
*其实ASP.NET 在处理 Web.config 文件时会自动对该文件的内容进行解密。 因此,不需要任何附加步骤即可对已加密的配置设置进行解密,供其他 ASP.NET 功能使用或用于访问代码中的值。
因此,不需要任何附加步骤即可对已加密的配置设置进行解密,供其他 ASP.NET 功能使用或用于访问代码中的值。 程序中直接使用
程序中直接使用 ConfigurationManager.ConnectionStrings就可以获取你想要的配置项和值等等,大家自己Qucik Watch一下,自己看一下吧。这样就多说了。
ConfigurationManager.ConnectionStrings就可以获取你想要的配置项和值等等,大家自己Qucik Watch一下,自己看一下吧。这样就多说了。
 只需要把-pe参数修改为-pd,就可以了。具体操作如下:
只需要把-pe参数修改为-pd,就可以了。具体操作如下: aspnet_regiis -pd "connectionStrings" -app "/EnConfig\WebApplication1"
aspnet_regiis -pd "connectionStrings" -app "/EnConfig\WebApplication1" 操作成功信息:
操作成功信息: Decrypting configuration section
Decrypting configuration section
 Succeeded!
Succeeded!图1:设置web共享
 以下是加密后的ConnectionString:
以下是加密后的ConnectionString: 
  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider"> <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
      xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>Rsa Key</KeyName>
            <KeyName>Rsa Key</KeyName> </KeyInfo>
          </KeyInfo> <CipherData>
          <CipherData> <CipherValue>lDEPz9sfUaFP26qIsQC3wZd43xr/NOjE3CxcMitgKnnNoa9tLUUjSJVfsvBRnXyGHyKJ0+kIsGssiXfpDPM63cJkwDoZHVnRRYGp5vD3SWM2JZ3SGD3iKjRtnJpMYcqzOONkN61moPbhWW6szd85pNZzMxjEWQdHElC2W6wg520=</CipherValue>
            <CipherValue>lDEPz9sfUaFP26qIsQC3wZd43xr/NOjE3CxcMitgKnnNoa9tLUUjSJVfsvBRnXyGHyKJ0+kIsGssiXfpDPM63cJkwDoZHVnRRYGp5vD3SWM2JZ3SGD3iKjRtnJpMYcqzOONkN61moPbhWW6szd85pNZzMxjEWQdHElC2W6wg520=</CipherValue> </CipherData>
          </CipherData> </EncryptedKey>
        </EncryptedKey> </KeyInfo>
      </KeyInfo> <CipherData>
      <CipherData> <CipherValue>bqKAbnOfFUUEUvbF4bfDeP5HNeW6EfH0A0H2nw4u/6knmeBqzaTFGxpxtMpcs1qQQGm2eJ4BajZpxhrIocOlo3J6ACr36OL/6EMlgkn5KdOb+WbceYMLXa96hoR8bXXVJDu11UoGBKGSdyGKTodE4zPHivXxwoY+TaDnB4FVy+ddSJrWmJCPRIXFcCPHO03l/bywpPDCyrrPZwCZI5Xqlq9z/Q99AtA8FwQY5BmVPvw=</CipherValue>
        <CipherValue>bqKAbnOfFUUEUvbF4bfDeP5HNeW6EfH0A0H2nw4u/6knmeBqzaTFGxpxtMpcs1qQQGm2eJ4BajZpxhrIocOlo3J6ACr36OL/6EMlgkn5KdOb+WbceYMLXa96hoR8bXXVJDu11UoGBKGSdyGKTodE4zPHivXxwoY+TaDnB4FVy+ddSJrWmJCPRIXFcCPHO03l/bywpPDCyrrPZwCZI5Xqlq9z/Q99AtA8FwQY5BmVPvw=</CipherValue> </CipherData>
      </CipherData> </EncryptedData>
    </EncryptedData> </connectionStrings>
  </connectionStrings>图3:aspnet自动解密
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号