web.config 配置节点加密

在 web.config 中可以存储数据库连接语句(通常存于 ),也可以存储 SQL 语句(通常存于),这样在我们的程序中就可以非常方便地调用,特别是 .NET Framework 2.0 中使用声明式数据绑定,更是需要将这些信息存储在 web.config 中。利用明文存储这些敏感信息是不明智的,这就需要加密。

利用 aspnet_regiis 对 web.config 加密

C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727>aspnet_regiis -pef connectionStrin
gs E:/wwwroot -prov DataProtectionConfigurationProvider

-pef 指定两个参数:

  • 这里 connectionStrings 是要进行加密的配置节,如果配置节不是根元素则就指定路径,如:父配置节/子配置节。
  • 这里 E:/wwwroot 是要加密的配置文件所在的物理目录。

-prov 表示使用哪个驱动来加密,一共有两个驱动可选,在类似于 C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/CONFIG 的位置,我们可以找到 machine.config 文件,在其 configProtectedData 配置节,我们可以看到这两个驱动的名称,以及默认的驱动是哪一个。这两个驱动是 RsaProtectedConfigurationProvider(类名 RsaProtectedConfigurationProvider)和 DataProtectionConfigurationProvider(类名 DpapiProtectedConfigurationProvider)。

  • RsaProtectedConfigurationProvider RSA 加密,公钥/私钥均存储在配置文件中,移植方便。
  • DataProtectionConfigurationProvider 使用 Windows 内置的加密服务,密钥由 LSASS.EXE 管理,无法移植。通过设置可以限定是只能某个帐户可以使用加密的数据,还是 Windows 中所有帐户均可使用。

你也可以用你自己的加密算法,具体请参见 MSDN 的实现受保护配置提供程序。

加密后,如何应用?

应用上没有变化,在获取这些加密的配置节数据时会自动对其解密。

要修改加密后的配置节内容怎么办呢。三种方法:一是对未加密的 web.config 备份进行修改,然后再加密覆盖之;二是使用 -pdf(注意不是 -pef)进行解密,再修改,再加密。注意,要对 DataProtectionConfigurationProvider 加密的配置文件进行解密,只能在加密的机器上进行;三是利用 IIS 中集成的 ASP.NET 编辑,该编辑时采用的明文,但保存时自动确定是采用密文还是明文,非常方便。

你可能感兴趣的:(C#)