现在的位置: 首页 > 综合 > 正文

演练:使用受保护的配置加密配置信息

2013年06月20日 ⁄ 综合 ⁄ 共 2007字 ⁄ 字号 评论关闭

使用受保护配置,可以对某个 ASP.NET 应用程序的 Web.config 文件的节进行加密,以保护由该应用程序使用的敏感信息。即使攻击者获取了对 Web.config 文件的访问,这也可以使攻击者难以获取对敏感信息的访问,从而改进应用程序的安全性。ASP.NET 包括两个可用于对 Web.config 文件的节进行加密的受保护配置提供程序:RSAProtectedConfigurationProvider(使用 RSACryptoServiceProvider 来加密配置节)和 DPAPIProtectedConfigurationProvider(使用 Windows 数据保护 API (DPAPI) 来加密配置节)。

在某些情况下,您可能需要使用 RSA 或 DPAPI 提供程序可用的算法以外的算法来加密信息。在这种情况下,您可以构建自定义的受保护配置提供程序以供 ASP.NET 使用。

受保护配置提供程序所需的类

若要实现受保护配置提供程序,请创建一个继承 System.Configuration 命名空间的 ProtectedConfigurationProvider 抽象类的类。ProtectedConfigurationProvider 抽象类继承 System.Configuration.Provider 命令空间的 ProviderBase 抽象类,因此还必须实现 ProviderBase 类必需的成员。以下各表列出了必须从 ProviderBaseProtectedConfigurationProvider 抽象类实现的属性和方法。若要查看每个成员的实现,请参见如何:生成并运行受保护的配置提供程序示例

必需的 ProviderBase 成员

成员 说明

Initialize 方法

为提供程序实例设置属性值,包括在应用程序配置中提供的实现特定的值和选项。

接受提供程序的名称和配置设置的 NameValueCollection 作为输入。

必需的 ProtectedConfigurationProvider 成员

成员 说明

Encrypt 方法

执行加密。接受包含要加密的配置节的 XmlNode 对象作为输入。例如,如果要加密的配置节是 connectionStrings 节,则 XmlNode 对象表示类似于下面的示例的 XML 数据。

<connectionStrings>
  <add name="SampleConnectionString" 
    connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" />
</connectionStrings>

Encrypt 方法对 XmlNode 对象的 OuterXml 值进行加密,并返回 EncryptedData 元素是根元素的 XmlNode 对象,如下面的示例所示:

<EncryptedData>
  <!-- encrypted contents -->
</EncryptedData>

EncryptedData 元素的内容格式由实现功能确定。在对该元素进行解密时,ASP.NET 会将 XmlNode 对象传递到 Decrypt 方法,其中 EncryptedData 元素是根元素。

Decrypt 方法

执行解密。接受包含加密配置节的 EncryptedData 元素的 XmlNode 对象作为输入。例如,如果 connectionStrings 节是已加密的配置节,则 XmlNode 对象所表示的 XML 数据类似于下面的示例中突出显示的 XML。

<connectionStrings configProtectionProvider="CustomProvider">
  <EncryptedData>    <!-- encrypted contents -->  </EncryptedData>
</connectionStrings>

Decrypt 方法对 XmlNode 对象的内容进行解密,并返回一个 XmlNode 对象,该对象表示 EncryptedDataXmlNode 对象的已解密内容。例如,如果 connectionStrings 节已进行加密,则 Decrypt 返回一个 XmlNode 对象,该对象包含类似于下面的示例的 XML 数据。

<connectionStrings>
  <add name="SampleConnectionString" 
    connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" />
</connectionStrings>

示例提供程序

有关使用 TripleDESCryptoServiceProvider 类对 Web.config 文件的节进行加密和解密的自定义受保护配置提供程序的示例,请参见如何:生成并运行受保护的配置提供程序示例

 

抱歉!评论已关闭.