繁体   English   中英

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

[英]When encrypting web.config connection string, where is the key stored?

在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放在同一台计算机上。 该指南提到了如何从一台计算机导出RSA密钥并将其导入另一台计算机以在Web场中使用。

但是请想一想:当您的应用程序可以解密web.config(因为它必须在使用连接字符串之前进行解密)时,任何人都可以这样做(如果他可以进入计算机)。 我知道可以设置使用密钥的权限,等等。但是恕我直言,在连接字符串中使用密码是错误的做法。

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

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

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

您可以将其存储在任意位置,而不必存储在web.config中。 建议:
1.在另一个配置文件中。
2.注册表。
3.硬编码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM