演练:使用受保护的配置加密配置信息
扫描二维码
随时随地手机看文章
使用受保护配置,可以对某个 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 数据。
复制代码Encrypt 方法对 XmlNode 对象的 OuterXml 值进行加密,并返回 EncryptedData 元素是根元素的 XmlNode 对象,如下面的示例所示:
复制代码EncryptedData 元素的内容格式由实现功能确定。在对该元素进行解密时,ASP.NET 会将 XmlNode 对象传递到 Decrypt 方法,其中 EncryptedData 元素是根元素。
Decrypt 方法
执行解密。接受包含加密配置节的 EncryptedData 元素的 XmlNode 对象作为输入。例如,如果 connectionStrings 节是已加密的配置节,则 XmlNode 对象所表示的 XML 数据类似于下面的示例中突出显示的 XML。
复制代码Decrypt 方法对 XmlNode 对象的内容进行解密,并返回一个 XmlNode 对象,该对象表示 EncryptedDataXmlNode 对象的已解密内容。例如,如果 connectionStrings 节已进行加密,则 Decrypt 返回一个 XmlNode 对象,该对象包含类似于下面的示例的 XML 数据。
复制代码示例提供程序
有关使用 TripleDESCryptoServiceProvider 类对 Web.config 文件的节进行加密和解密的自定义受保护配置提供程序的示例,请参见如何:生成并运行受保护的配置提供程序示例。