使用受保护配置,可以对某个 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 类必需的成员。以下各表列出了必须从 ProviderBase 和 ProtectedConfigurationProvider 抽象类实现的属性和方法。若要查看每个成员的实现,请参见如何:生成并运行受保护的配置提供程序示例。
必需的 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 文件的节进行加密和解密的自定义受保护配置提供程序的示例,请参见如何:生成并运行受保护的配置提供程序示例。