[英]When encrypting web.config connection string, where is the key stored?
在web.config中加密连接字符串时,密钥存储在哪里?
另外,更改连接字符串凭据时是否需要重新编译?
根据本文档 ,在加密配置时,您有两个提供程序:
我对DPAPI知之甚少,所以我不能说赞成或反对。 当我考虑使用web.config加密时,我选择了RSA并定义了其他CSP来保存我的RSA加密密钥。 您可以在configProtectedData元素的machine.config中进行设置。
提到的页面描述并指导您如何使用RSAProtectedConfigurationProvider加密web.config部分。 使用此提供程序时,有两种选择
然后,该指南描述了如何将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.