加密web.config连接字符串时,其中存储的密钥

本文关键字:存储 密钥 web config 连接 字符串 加密 | 更新日期: 2023-09-27 17:57:28

在web.config中加密连接字符串时,密钥存储在哪里?

此外,当您更改连接字符串凭据时,是否需要重新编译?

加密web.config连接字符串时,其中存储的密钥

根据本文档,加密配置时有两个提供程序:

  • RSAProtectedConfigurationProvider
  • DPAPIProtectedConfigurationProvider

我对DPAPI知之甚少,所以我不能说任何支持或反对它的话。当我考虑使用web.config的加密时,我选择了RSA,并定义了其他CSP来保存我的RSA加密密钥。您可以在configProtectedData元素的machine.config中设置它。

上述页面介绍并指导您如何使用RSAProtectedConfigurationProvider加密web.config节。使用此提供商时,您有两个选项

  • 机器级容器(RSA密钥将存储在''Documents and Settings''All Users''Application Data''Microsoft''Crypto''RSA''MachineKeys中)
  • 用户级密钥容器(RSA密钥将存储在''Documents and Settings{UserName}''Application Data''Microsoft''Crypto''RSA中)

然后,本指南介绍了如何将Aspnet_Regiis.exe工具与RSAProtectedConfigurationProvider一起使用来加密配置文件的部分。

回答你的第二个问题。您不需要重新编译应用程序,但必须解密节(连接字符串)、更改凭据并再次加密节。或者将web.config替换为新的web.config,然后再次加密。

请注意,加密节时,您必须在与web.config相同的计算机上拥有加密密钥。该指南介绍了如何从一台计算机导出RSA密钥,并将其导入另一台计算机,以便在web场中使用。

但请考虑一下:当你的应用程序可以解密web.config时(因为它必须在使用连接字符串之前进行解密),那么任何人都可以这样做(如果他能到达机器)。我知道可以设置使用密钥的权限等,但IMHO在连接字符串中使用密码是错误的做法。

最后一件事。上面指南中提到的Aspnet_Regiis.exe工具只能加密web.config。如果您有app.config并希望加密它,请查看此SO问题。

我可以回答第二个问题,但不能回答第一个问题。

更改连接字符串凭据时不需要重新编译,因为web.config是动态加载的。

您可以将其存储在任何需要的位置,只是不能存储在web.config中。建议:
1.在不同的配置文件中
2.注册
3.硬编码

我可能会选择第一个选项。